从 CSS 的权重规则看选择器及优先级

一、CSS权重规则

  CSS 的权重规则是学习 CSS 时非常重要的一个概念,每个选择器都有自己的权重。每条css规则,都包含一个权重级别。 这个级别是由不同的选择器加权计算的,权重是一个决定哪种规则生效,或者是优先级的过程 ,因此了解权重规则,可以很好地理解 CSS中的选择器及其优先级,而不用去背繁杂的优先级规则。

二、权重等级

  一般来说,根据选择器的不同,我们将权重等级分为4个等级:

1. 内联样式

  如: <div class="box" id="box1" style="width: 100px; height: 60px"></div>,此项权值为1000.

2.ID选择器

  如上例使用 #box1,权值为100

3.类,伪类和属性选择器
  • 类选择器如上例使用 .box
  • 伪类选择器如 :hover, :link, :visited, :active,以及CSS3中新增的一些伪类选择器;
  • 属性选择器如[class = "box"][id = "box1"]

权值为10

CSS3新增伪类举例:
- p:first-of-type 选择属于其父元素的首个<p>元素的每个<p>元素。
- p:last-of-type 选择属于其父元素的最后<p>元素的每个<p>元素。
- p:only-of-type 选择属于其父元素唯一的<p>元素的每个<p>元素。
- p:only-child 选择属于其父元素的唯一子元素的每个<p>元素。
- p:nth-child(2) 选择属于其父元素的第二个子元素的每个<p>元素。
- :enabled、:disabled 控制表单控件的禁用状态。
- :checked 单选框或复选框被选中。

4.元素选择器和伪元素选择器
  • 元素选择器如 div,p之类的
  • 伪元素选择器如 ::before,::after之类的

权值为1

三、基本比较规则

根据上面列出的4个权重等级,把所有等级的值相加得出选择器的权重值。

牛刀小试:
 *{}                         ====》0
 li{}                        ====》1(一个元素)
 li:first-line{}             ====》2(一个元素,一个伪元素)
 ul li {}                    ====》2(两个元素)
 ul ol+li{}                  ====》3(三个元素)
 h1+ *[rel=up] {}            ====》11(一个属性选择器,一个元素)
 ul ol li.red{}              ====》13(一个类,三个元素)
 li.red.level{}              ====》21(两个类,一个元素)
 style=""                    ====》1000(一个行内样式)
 p {}                        ====》1(一个元素)
 div p {}                    ====》2(两个元素)
 .sith {}                    ====》10(一个类)
 div p.sith{}                ====》12(一个类,两个元素)
 #sith{}                     ====》100(一个ID选择器)
 body #darkside .sith p {}   ====》112(1+100+10+1,一个Id选择器,一个类,两个元素)
基本规则

1、相同的权重:以后面出现的选择器为最后规则;
2、不同的权重,权重值高则生效;
3、!important最大,会覆盖所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值