CSS选择器和声明的特殊性(优先级)

CSS选择器:

CSS选择器有:id选择器(#myid)、类选择器(.myclassname)、标签选择器(div,h1,p)、相邻选择器(h1+p)、子选择器(ul>li)、后代选择器(li a)、通配符选择器(*)、属性选择器(a[rel="exterbal"])、伪类选择器(a:hover,li:nth-child)、伪元素选择器(p::first-letter)

相邻选择器:选择紧接在另一个元素后的元素,并且二者有相同的父元素。

CSS特殊性:

选择器的特殊性由选择器本身的组建确定。特殊性值表述为4个部分,如:0,0,0,0。一个选择器的具体特殊性如下确定:

1.对于选择器中给定的各个ID属性值,加0,1,0,0。

2.对于选择器中给定的各个类属性值属性选择或者伪类,加0,0,1,0。

3.对于选择器中给定的各个元素伪元素(CSS2.1指出,伪元素有特殊性),加0,0,0,1。

4.结合符和通配选择器对特殊性没有任何贡献。

note:通配选择器的特殊行为0,0,0,0。

         eg:div p {color: green}    /*0,0,0,2*/

              body * strong    /*0,0,0,2*/

           结合符则根本没有特殊性,甚至连0特殊性都没有。

5.CSS2.1新增,第一个0是为内联样式声明保留的,即内联声明的特殊性是:1,0,0,0。

     eg:h1#meadow {color:black;}

          <h1 id="meadow" style="color:green;">The Meadow Party</h1>

          由于内联声明的特殊性最高,h1元素的文本是绿色。

noteID和属性选择性的特殊性(ID选择器贡献100,id属性选择器贡献10)

          ID选择器和指定id属性的选择器在特殊性上有所不同:

          html>body table tr[id="totals"] td ul>li {color: maroon;}  /*0,0,1,7*/

          li#answer  {color:navy;}  /*0,1,0,1    (winner)*/

          #meadow  {color: blue;}  /*0,1,0,0*/

          *[id="meadow"]  {color:red}   /*0,0,1,0*/      

6.重要性:

         重要声明:在声明结束分号之前插入!important来标志。如果希望把两个声明都标志为重要,则每个声明都需要自己的!important标志。如果一个属性的值包含多个关键词,如font,必须将!important标志放在声明的最后。

标志为!important声明并没有特殊的特殊性值,不过要与非重要声明分开考虑。所有!important声明会分组在一起,重要声明的特殊性冲突会在重要声明内部解决。如果一个重要声明和非重要声明冲突,胜出的总是重要声明。

p.light {color: yellow; font: smaller Times, serif !important; }

CSS优先级:

1.按照显示权重对应用到该元素的所有声明排序。!important声明的样式优先级最高,如果冲突再进行计算;

2.按照特殊性对应用到给定元素的所有声明排序。有较高特殊性的元素权重大于较低特殊性的元素;

3.按照出现顺序对应用到给定元素的所有声明排序。一个声明在样式表或文档中越后出现,它的权重就越大。(如果样式表中有导入的样式表,一般认为出现在导入样式表中的声明在前,主样式表中的所有声明在后)

4.继承的值根本没有特殊性,甚至连0特殊性都没有。因此继承得到的样式的优先级最低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值