css层叠与优先级

4 篇文章 0 订阅

概念:CSS 是 Cascading Style Sheets 的缩写,这暗示层叠(cascade)的概念是很重要的。在最基本的层面上,它表明CSS规则的顺序很重要,但它比那更复杂。什么选择器在层叠中胜出取决于三个因素(这些都是按重量级顺序排列的——前面的的一种会否决后一种)

  • 重要性
  • 专用性
  • 源码代码次序

1、重要性:在CSS中,有一个特别的语法可以让一条规则优先于其他规则:!important。把它加在属性值的后面可以使这条声明有无比强大的力量。  

tips:重载这个 !important 声明的唯一方法是在后面的源码或者是一个拥有更高专用性的源码中包含相同的 !important 特性的声明。

2、专用性:专用性基本上是衡量选择器的具体程度的一种方法——它能匹配多少元素。如上面所示的示例所示,元素选择器具有很低的专用性。类选择器具有更高的专用性,所以将战胜元素选择器。ID选择器有甚至更高的专用性, 所以将战胜类选择器. 战胜ID选择器的唯一方法是使用 !important

一个选择器具有的专用性的量是用四种不同的值(或组件)来衡量的,它们可以被认为是千位,百位,十位和个位——在四个列中的四个简单数字:

  1. 千位:如果声明是在style 属性中该列加1分(这样的声明没有选择器,所以它们的专用性总是1000。)否则为0。
  2. 百位:在整个选择器中每包含一个ID选择器就在该列中加1分。
  3. 十位:在整个选择器中每包含一个类选择器、属性选择器、或者伪类就在该列中加1分。
  4. 个位:在整个选择器中每包含一个元素选择器或伪元素就在该列中加1分。

通用选择器 (*), 复合选择器 (+>~, ' ') 和否定伪类 (:not) 在专用性中无影响。

选择器千位百位十位个位合计值
h100010001
#indentifier01000100
h1 + p::first-letter00030003
li > a[href*="zh-CN"] > .inline-warning00220022
没有选择器, 规则在一个元素的 <style> 属性里10001000

3、源代码次序:如果选择器具有相同的重要性与专用性,那么第三个因素将帮助决定哪一个规则获胜——后面的规则将战胜先前的规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS选择器的优先级是由多个因素决定的。一般情况下,选择器的优先级由其组成部分的权重决定,具体规则如下: 1. 使用!important标记的样式具有最高优先级,会覆盖其他所有样式。 2. 选择器中包含的ID选择器的权重最高,接下来是类选择器和属选择器,最后是标签选择器。例如,#id选择器的权重高于.class选择器,而.class选择器的权重又高于标签选择器。 3. 组合选择器(如子选择器、后代选择器等)的优先级与组合中各个选择器的优先级相加。例如,div p选择器的优先级高于div选择器。 4. 当具有相同优先级的选择器应用于同一个元素时,后面出现的选择器具有更高的优先级。这意味着后渲染的样式会覆盖先渲染的样式。 为了避免样式冲突和样式覆盖的问题,可以采取以下措施: 1. 确保选择器的权重足够高,以覆盖其他可能的选择器。可以使用ID选择器或!important标记来提高权重,但需要谨慎使用!important,尽量避免滥用。 2. 使用更具体的选择器来定位目标元素,以减少与其他元素的冲突。 3. 避免使用嵌套选择器和通用选择器,这样可以减少选择器的复杂和权重。 4. 使用样式层叠和继承的特,合理组织样式表的结构,使得样式之间相互独立且易于维护。 通过合理的选择器使用和样式组织,可以有效地解决CSS选择器优先级的问题,避免样式冲突和样式覆盖的情况发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CSS选择器优先级](https://blog.csdn.net/qq_40920910/article/details/122920539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值