CSS样式的优先级别

本文详细介绍了CSS样式的优先级原则,包括后出现样式优先、ID选择器优先、数量取胜等,并通过实例展示了如何确定样式优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

样式不起作用时,多数是样式优先级或是样式继承的问题,在一遍文章看到很详细的介绍,摘录了下来和大家一起分享。(样式效果图)

优先原则一:文本从上到下,后出现的样式优先于前面出现的同一样式

例:

<style type=”text/css”>

.def1{background:black;}

.def2{background:yellow; }

</style>

<div class=” def2 def1″>测试1</div>

结果:所有浏览器均yellow色,注意:与class=”” 引号内的顺序无关,只看.def1和.def2在声明时的顺序,.def2后声明的所以权重高。

优先原则二:id声明(即 # 开头的样式)> class声明(即 . 开头的样式)> 标签声明(即 类似 div 开头)

以上三种声明处于不同的量级,份量上,div 开头相当于 1克 重,. 开头相当于 1公斤 重,# 开头相当于 1吨 重。

例:

<style type=”text/css”>

#bb{background:pink}

.def{background:black;}

div{background:yellow; }

</style>

<div id=”bb” class=”def”>测试2</div>

结果:所有浏览器均pink色,注意:虽然按优先原则一,后出现的权重高,但那只是在同样重量级下的比较,优先原则二各重量级别就不同了。

优先原则三:数量取胜。如果同一个样式声明即一个大括号{}由多个 # . 或 div 组成,则权重按出现符号的量级增加

比如:#bb #tt #dd {background:red} 则重量等于3吨

#bb .tt ul.dd li {background:red} 则重量等于1吨2公斤2克,这么精确的重量,就不需要举例了吧。

再次说明:优先原则一只适用两个样式声明同样重的情况

优先原则四:‘!important’。相当于无限重量,在之前已经有说明,需要注意:ie下,在同一条样式声明即一个大括号中出现的!important 会被随后出现的同名样式冲洗掉。

<style type=”text/css”>

.def1{background:yellow !important;background:red;}

.def2{background:green;}

</style>

<div class=”def1 def2 “>dd</div>

结果:ie下,green色,background:yellow !important被后面的background:red冲洗了,而background:red与background:green的较量中,前者败在优先原则一之下。

优先原则五:近水楼台。<div style=”background:black”></div>直接写在元素体内的style优先级别最高!(仅次于!important)用重量来形容,可以定为百万吨量级。

<style type=”text/css”>

.def1{ background:red;}

</style>

<div class=”def1 ” style=”background:black”>dd</div>

结果:black色。

<style type=”text/css”>

.def1{ background:red !important;}

</style>

<div class=”def1 ” style=”background:black”>dd</div>

结果:red色。

<style type=”text/css”>

.def1{ background:red !important;}

</style>

<div class=”def1 ” style=”background:black !important”>dd</div>

结果:black色。

 下面的代码应用了上面的优先级,请看效果。


Code

### CSS 样式优先级设置规则 在网页开发中,CSS 样式优先级决定了当多个样式规则应用于同一 HTML 元素时,哪一个规则会被最终采用。以下是详细的优先级设置规则: #### 1. **`!important`声明** 如果某条样式规则带有 `!important` 声明,则这条规则具有最高优先级,无论其他规则的选择器特异性如何[^4]。需要注意的是,IE6 浏览器并不支持此特性。 #### 2. **内联样式 (Inline Styles)** 内联样式是指直接写入 HTML 元素的 `style` 属性中的样式。这种样式的优先级仅次于带 `!important` 的规则[^4]。尽管其优先级较高,但由于难以管理和维护,通常不建议频繁使用。 #### 3. **ID 选择器 (#id)** ID 选择器通过唯一的标识符来定位特定的 HTML 元素。它的优先级高于类选择器、属性选择器和伪类选择器,但低于内联样式[^4]。 #### 4. **类选择器 (.class), 属性选择器 ([attr]), 和伪类选择器 (:pseudo-class)** 这些选择器的优先级相同,位于类型选择器之上。它们可以通过 `.myClass`, `[attr=value]`, 或者 `:hover` 等方式定义[^5]。如果存在多个此类选择器影响同一个元素,则具体生效的规则取决于特异性的计算结果。 #### 5. **类型选择器 (Type Selectors)** 类型选择器基于 HTML 元素名称匹配目标对象,比如 `div`, `p`, `span` 等。这类选择器的优先级较低,在没有更具体的规则情况下才会被应用。 #### 6. **通用选择器 (*)** 作为最低级别的选择器,它可以匹配所有的 HTML 元素,因此只有在其没有任何竞争的情况下才可能起作用。 除了以上提到的基础层次之外,还需要注意几个额外的因素会影响最终的效果: - **特异性(Specificity):** 特异性是一个数值组合用来衡量每一条 css 规则的重要性程度。它由四个部分组成(从左至右分别是 a,b,c,d),分别代表不同种类选择器的数量总和。例如:`a=number of id selectors; b=number of class selectors, attributes or pseudo-classes; c=number of type selectors and pseudo-elements; d=number of element name.` 当两条规则拥有相同的权重时,最后加载的那个将会覆盖前面的一个[^3]。 - **继承(Inheritance):** 某些属性可以从父节点传递给子节点,即使后者并没有显式指定这些属性值也会受到影响。不过这种情况不会改变原有优先权结构只是补充了一些默认行为而已[^3]。 综上所述,为了构建高效且易于维护的网站界面设计,开发者应该充分理解和灵活运用上述各项原则,并尽量减少滥用 !important 来保持代码整洁有序。 ```css /* 示例 */ #uniqueElement { color: red; } .specialClass { background-color: blue; } [type="text"] { border: 1px solid black; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值