CSS样式表中的优先权[CSS]

1、特殊性
首先来看一下这个例子将会发生的情形:

 

     .grape { color :Blue; }  

     H1  { color : Red; }

 

    < h1  class ="grape" > Meerkat < em > Central</ em > </ h1 >

 

     H1和.grape都匹配上面的H1元素,那么到底应该使用哪一个呢?实践证明.grape是正确答案,把句子显示为蓝色。根据规范,一般的 HTML元素选择符(H1,P 等)具有特殊性1,类选择符具有特殊性10,ID选择符具有特殊性100,值越大权重就越大,就优先选用。

  
  
  1. H1  { color : Red; }                   /* 特殊性 = 1 */       
  2. P EM { color : Blue; }                /* 特殊性 = 2  */  
  3. .grape { color : Fuchsia; }            /* 特殊性 = 1 0 */  
  4. P.bright { color : Yellow; }            /* 特殊性 = 11 */  
  5. P.bright EM.dark{ color : Gray; } /* 特殊性 = 12 */  
  6. #ID01  { color : Red; }                 /* 特殊性 = 100 */  
 

2、继承
在特殊性的框架下,被继承的值具有特殊性0,也就是说任何显式声明的规则将会覆盖其继承样式,即便这条规则具有多高的权重。 

  
  
  1. H1 #ID01  { color : Red; }           /* 特殊性 = 101 */  
  2. EM{ color : Gray; }             /* 特殊性 = 1 */  
  3. < H1  ID ="ID01> Meerkat < EM > < Central </ EM > </ H1 >  

虽然ID选择符特殊性最高,但由于在特殊性的框架下,继承值只有特殊性0,因些Central会显示为Gray颜色

 

3、STYLE元素
还有sytle元素在CSS下权值定义为100,尽管ID选择也一样,实际上style元素比ID具有更高的特殊性。

  
  
  1. #ID01  EM{ color : Gray; } 
  
  
  1. < H1  ID ="ID01" > Meerkat < EM  style ="color: red;" > Central</ EM > !</ H1 >  

会显示为red颜色

 

4、重要性(!important)
!important具最高特特性比如说1000,因此!important规则会覆盖内联STYLE属性的内容

         H1colorred  !important ; }

        < H1  style ="color:black;" > Meerkat Central!</ H1 >  

将显示为RED颜色

 

一种特殊情形

  
  
  1. P#warn  { color : Red !important ; }  
  2. EM { color : Black; }

    <p  id ="warn" > This text is red, but < em > emphasized text is black.</ em > </ p >  

虽然定义!important最高特殊性,但句子并没有全部显示为RED红色,为什么呢?也许我们得回头看看前面的规则,在前面的第二点继承中提 “在特殊性的框架下,继承值只有特殊性0。”因此即便定义!important,继承里的特殊性也只有0,所以显示为特殊性为1的EM规则。

权重顺序为:继承 => HTML普通选择符 => 类选择符 =>style元素 => !important


5、层叠

  1) 若两条规则具有相同的权值、起源及特殊性,那在样式表中最后出现的规则优先.
  2) 任何位于文档中的规则都比引入的规则优先.

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值