CSS选择器的优先级排序

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;优快云知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】

在这里插入图片描述

CSS选择器的优先级是按照特定规则计算的,浏览器通过这些规则来决定哪些样式声明将应用于元素。优先级由高到低的排序规则如下:

  1. 内联样式(最高优先级)
    直接写在HTML元素的style属性中的样式,例如:

    <div style="color: red;">...</div>
    
  2. ID选择器
    通过元素的id属性选择,例如:

    #header { color: blue; }
    
  3. 类选择器、属性选择器和伪类
    例如:

    .container { width: 100%; }  /* 类选择器 */
    [type="text"] { padding: 5px; }  /* 属性选择器 */
    a:hover { text-decoration: underline; }  /* 伪类 */
    
  4. 元素选择器和伪元素
    例如:

    p { margin-bottom: 1em; }  /* 元素选择器 */
    ::before { content: "→"; }  /* 伪元素 */
    
  5. 通配符选择器(最低优先级)
    例如:

    * { box-sizing: border-box; }
    

计算优先级的规则

  • 内联样式:计为 1,0,0,0
  • ID选择器:每个ID计为 0,1,0,0
  • 类/属性/伪类选择器:每个计为 0,0,1,0
  • 元素/伪元素选择器:每个计为 0,0,0,1
  • 通配符选择器:不计分(0,0,0,0

示例

比较以下选择器的优先级:

/* 优先级: 0,1,0,0(ID选择器) */
#content { color: red; }

/* 优先级: 0,0,1,1(类选择器 + 元素选择器) */
.main p { color: blue; }

/* 优先级: 0,0,0,1(元素选择器) */
p { color: green; }

如果一个元素同时匹配上述三个规则,#content 的样式将优先应用,因为它的ID选择器优先级最高。

特殊情况

  • !important声明:可以覆盖任何优先级规则,但应谨慎使用,因为它会破坏正常的优先级体系。

    p { color: red !important; }  /* 强制生效,除非有更高的!important */
    
  • 继承的样式:永远比直接应用的样式优先级低,即使是低优先级的选择器直接应用也会覆盖高优先级的继承样式。

理解这些规则后,你可以更准确地控制CSS样式的应用顺序,避免使用!important带来的维护问题。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还是大剑师兰特

打赏一杯可口可乐

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

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

打赏作者

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

抵扣说明:

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

余额充值