CSS选择器优先级记录

在读《深入CSS高级Web标准解决方案》时看到的,在此记录下来选择器的优先级
在做task0001的时候有一次写了下面的代码,先设置了一个全部的样式,再想设置个别的,一直没效果不知道哪里出了问题,以前一直以为#id{}就是最高优先级

#父标签ID .子标签类 {
    //code
}
#子标签ID {
    //code
    //这个居然没有上面的优先级高
}

以下都是个人理解的说法
首先设置单个元素style="{}"的优先级最高,接下来是<style><style>中的选择器,最后是外部链接的选择器
先假设一个优先级变量为P=xyz=000
如果出现一个#ID名,则x+1,出现一个.类名则y+1,出现一个标签名则z+1,P值越高优先级越高,P相同的根据选择器在代码中出现的位置,越靠后越高
举几个栗子:

#header #banner #content {} // P=300
div#header div {} // P=102
div.container div {} // P=012
.container {} // P=010
div {} // P=001

上面的优先级由高到低
书比较老,没有写[property],[property="value"],:first-child等等,经过我的测试,它们的优先级相同,伪类,[property],[property="value"]的优先级应该相同(未测试所有伪类),都大于类这个级别,小于ID,大于多个标签,最后结果是等于标签名.类的级别,也就是y+1且z+1

p[name] span {
    color: #777;
}
p[name="p1"] span {
    color: #0f0
}
p:nth-child(1) span {
    color: #44d;
}
p:first-child span {
    color: #f00;
}
body>div>p>span {
    color: #00f;
}

上面的前四个优先级相同,根据出现顺序,但优先级都高于最后一个

p:first-child span {
    color: #f00;
}
.p span {
    color: #00f;
}

这种情况下还是第一个优先级高

.p span {
    color: #00f;
}
span:first-child {
    color: #f00;
}
span.span {
    color: #00f;
}
span:first-child {
    color: #f00;
}

这种情况两种选择器优先级相同P=011

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,882评论 0 5
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,308评论 6 13
  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 893评论 0 1
  • 简述 下一阶段抓取目标对象"大知乎",本篇幅主要使用页面解析方式抓取大V关注对象用户头像。 目标对象 知乎轮子哥关...
    过桥阅读 445评论 0 1