css选择器的优先级

以前写过一篇如何个元素应用规则, 现在看来写的好烂, 所以再写一篇当作补充吧.

四个等级

css选择器的优先级规定了文档采用哪一种样式.
选择器的等级主要有以下四个等级(依次递减)

  1. 行内样式(style声明)
  2. id选择器
  3. 类, 伪类, 属性选择器
  4. 元素选择器, 伪元素选择器

当同一个元素有多个css规则时, 对照着上面的四个等级, 对每一个规则确定每个等级有几个选择器, 记下个数. 然后做下列运算.
行内样式的选择器个数乘以1000
id选择器的个数乘以100
第三等级的个数乘以10
第四等级的个数乘以1
然后将上述算出来的数想加, 数值最高的规则才会应用到元素.

important

importtant不算优先级, 但是它比上面四种都有影响力. 当某一个声明或者规则应用important元素时, 这个声明或者规则就会称为元素的应用样式, 其他则会被覆盖.
如:

p { height: 50px !important; } /*有效*/
p { height: 200px} /*无效*/

由于important的特性, 所以在css文件中应该少用important.

参考

https://developer.mozilla.org/zh-CN/docs/Web/CSS/Specificity

### CSS选择器优先级规则 CSS选择器优先级决定了当多个样式规则应用于同一个HTML元素时,哪一个规则会被应用。理解这些规则对于编写可维护和高效的CSS至关重要。 #### 计算优先级的方法 每个选择器都有一定的权重值,具体如下: - **内联样式**:`1000` - **ID选择器**:`100` - **类选择器、伪类和属性选择器**:`10` - **标签选择器和伪元素**:`1` 如果两个选择器的选择符数量相同,则更晚定义的那个会覆盖较早的一个[^2]。 #### 特殊情况处理 浏览器内置的用户代理(UA)样式表提供了默认样式的设定,在大多数情况下可以被开发者自定义的样式所覆盖。然而,某些特定场景下(比如按钮的颜色),UA样式可能拥有更高的优先权,除非明确指定了相反的指令。 #### 使用JavaScript获取优先级 通过编程手段也可以查询给定属性的实际优先级别。例如,利用DOM API中的`getPropertyPriority()`方法来返回指定CSS属性是否有!important标记[^4]: ```javascript ps.println("priority: " + styleDeclaration.getPropertyPriority(property)); ``` 此代码片段展示了如何打印出某个CSS属性是否带有高优先级标志! #### 实际案例分析 考虑一段简单的HTML结构及其对应的CSS: ```html <div id="main-content"> <p class="highlight">This paragraph has special styling.</p> </div> ``` ```css /* Example of different selectors */ #main-content p { color: blue; } /* Specificity value: 101 */ .highlight { font-weight: bold; } /* Specificity value: 10 */ p { text-decoration: underline; } /* Specificity value: 1 */ ``` 在这个例子中,尽管三个选择器都匹配到了相同的 `<p>` 元素,但由于它们各自的特异性不同,最终的效果将是字体加粗且文字颜色变为蓝色,而不会加上下划线效果.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值