CSS优先级-权重叠加计算

文章详细解释了CSS选择器的优先级计算规则,从ID、类、标签到行内样式的选择器权重比较,强调了权重叠加时不逢十进一的原则。通过示例代码展示了选择器的层叠性,并证明通配符在权重计算中无权重。同时指出,父标签样式对子标签的继承具有最低优先级。
  • 先上总结:

  1. 说明:

  1. 公式: (行内, Id, 类, 标签)

  1. 规则: 从左至右依次做个数上的比较, 如果同级数量一致, 则比较下一级个数, 直到某一级数量不一致, 则数量较大的一方选择器的优先级较高, 后面的数量就无需比较了。 如选择器1 (0, 0, 1, 0), 选择器2 (0, 0, 0, 3), 那么选择器1的优先级高于选择器2。如果所有的数值都一致的话, 说明两选择器相同, 那就依据css层叠性的特点. 浏览器会选择后一个选择器

  1. 备注:

  1. 权重叠加计算不是正常的加法计算, 不需要逢十进一。 如标签是11 类是0 那么只可以是 (0, 0, 0 , 11), 不能是(0, 0, 1, 1)

  1. * 通配符没有权重

  1. 无论父标签用了什么选择器并设置了什么样式, 对子标签来说都是继承, 继承的优先级永远是最低的。

  • 准备:

先添加一段html代码

<div>
    <p>这是一个段落</p>
</div>

之后为了能更好地查看结果, 设置点字体样式, 由于咱代码简单, 就使用一个通配符选择器设置样式

* {
    font-family: 楷体;
    font-size: 60px;
 }

  • 代码示例说明:

  1. 同级数量的比较

  1. 先写一个p标签选择器, 运行一下效果

/* (0, 0, 0, 1) */
 p {
    color: blue;
 }
  1. 再写一个后代选择器如下, 再运行一下效果

/* (0, 0, 0, 2) */
 div p {
    color: aqua;
 }

由于后者标签数量高于前者标签数量, 所以后者选择器高

建议: 可以把b步骤的代码放在a步骤的前面 ,这样可以更好地体现优先级的关系(优先级是没有层叠性的特点), 可以更好地排除层叠性的可能(虽然根本就没这可能, 只是方便理解), 以下示例皆是如此

  1. 不同级别的比较

  1. 设计一个类构造器

/* (0, 0, 1, 0) */
.son {
    color: darkslategray;
}
  1. 在p标签上加上类选择器

<div>
    <p class="son">这是一个段落</p>
</div>

由于类级别比标签高, 所以.son 选择器的优先级别高于div p选择器

  1. 通配符没有权重的问题

首先优先级是没有层叠性的特点的, 这个在建议中也有描述。

其次咱可以假设它具备权重, 那样的话它就不会有层叠行的效果

  1. 先写一个p标签选择器, 样式和之前的一样

p {
    color: blue;
 }
  1. 之后在它的后面写一个* p选择器

* p {
    color: yellowgreen;
 }

查看效果是文字的颜色是yellowgreen。

  1. 接下来把* p选择器的代码放在p选择器之上, 再运行

这时候会发现字体颜色由原来的yellowgreen变为了blue。这就说明它并没有体现优先级, 而是体现出了层叠性的效果, 所以说通配符在权重叠加计算中没有任何权重

  • 示例代码:

以下是我的实例代码, 请参考

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*
            权重计算: 
                1. 说明: (行内, Id, 类, 标签)
                2. 规则: 从左至右依次做个数上的比较, 如果同级数量一致, 则比较下一级个数, 直到某一级数量不一致, 则数量较大的一方选择器的优先级较高, 
                        后面的数量就无需比较了。 如选择器1 (0, 0, 1, 0), 选择器2 (0, 0, 0, 3), 那么选择器1的优先级高于选择器2。如果所有的数值都一致的话, 
                        说明两选择器相同, 那就依据css层叠性的特点. 浏览器会选择后一个选择器
            备注:
                1. * 通配符选择器没有权重
                2. 无论父标签用了什么选择器并设置了什么样式, 对子标签来说都是继承, 继承的优先级永远是最低的.
                3. 权重叠加计算不是正常的加法计算, 不需要逢十进一
         */ 
         /* 权重计算 */
         /* (0, 2, 0, 0) */
        #divBox #pBox {
            color: orchid;
        }

        /* (0, 1, 0, 0) */
        #pBox {
            color: orange;
        }

         /* (0, 0, 2, 0) */
         .dad .son {
            color: rebeccapurple;
         }
        
         /* (0, 0, 1, 1) */
        .dad p{
            color: chartreuse;
        }

        /* (0, 0, 1, 0) */
        .son {
            color: darkslategray;
        }

         /* (0, 0, 0, 2) */
         div p {
            color: aqua;
         }
         
         /* 通配符没有权重 */
         /* 假使 * 有权重, 那么即使是如下的顺序也不会前一个选择器也不会被后一个选择器覆盖 */
         /* (0, 0, 0, 1) */
         * p {
            color: yellowgreen;
         }
         /* (0, 0, 0, 1) */
         p {
            color: blue;
         }

         * {
            font-family: 华文行楷;
            font-size: 60px;
         }
    </style>
</head>
<body>
    <div class="dad" id="divBox">
        <!-- (1, 0, 0, 0) -->
        <p class="son" id="pBox" style="color: gold;">这是一个段落</p>
    </div>
</body>
</html>
  • 备注:

头回写博客,如有写的不好或是有问题, 还请多多指教多多担待, 如有问题或是建议, 欢迎评论区里留言

LM4766+AD827+UPC1237 双声道50W X 2功放电路+PCB设计(附外壳3D图)一直想整个音量杠杠的音质杠杠的功放,效果要震憾的功放,找了好多方案,看中LM4766 ,查质料.....画图.....打板.....买元件.....画图更新第二代......打板.......成品出来.......没有失望啊.......说说使用一月有余的感觉 1,有点就不说了LM4766 国半的片子 给力!!!! 2,这个非桌面音响设计,功耗较大,不适合7X24小时开机,(土豪请忽略) 3,自己用的两个一个现代音响的两个30W喇叭 声音没敢开最高..差不多80%时喇叭有点破音(声音已经震耳欲聋了) 4,推荐喇叭50W以上4欧或者8欧 全频的 5,采用80W双18V环牛 6,无输入音量最大时 喇叭没有任何电流声!! 7,加了UPC1237 喇叭保护电路,作用自己百度 8,集成了AD827前级双运放调音电路(兼容NE5532,OP257,AD828,OPA2604等等这个看你自己土豪的程度了) 9,自己做了两个版本,第一版多了TI的USB声卡和平衡调节,使用觉得没卵用,第二版就咔掉了 10,供电部分采用LM337+LM317 超越78.79系类 11,音量大小,高音,中音,低音调节. 3.5MM耳机孔输入,双莲花座输出,电源带开关 12,设计就是小体积功放。。扇热片位置留的很小。所以平时最高温达到60度了,想低温使用的请另找外壳加大型散热片 13,调音部分电容全采用进口电容看个成品
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹏云友

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值