CSS权重

原文

博客原文

大纲

1、CSS层叠
2、CSS权重
3、权重等级
4、权重的规则
5、!important

1、CSS层叠

CSS全称:层叠样式表 (Cascading Style Sheets),有层级的、相互叠加的样式。
1、找到所有作用于元素和属性的声明
2、一个样式是否作用于元素依赖于这个样式的权重以及样式来源的顺序
说明:来源的顺序:这个样式来源于行内样式、还是外部引入样式亦或者是浏览器默认的样式

2、CSS权重

权重决定了你css规则怎样被浏览器解析直到生效。“css权重关系到你的css规则是怎样显示的”。
当很多的规则被应用到某一个元素上时,权重是一个决定哪种规则生效,或者是优先级的过程。
每个选择器都有自己的权重。你的每条css规则,都包含一个权重级别。 这个级别是由不同的选择器加权计算的,通过权重,不同的样式最终会作用到你的网页中 。
如果两个选择器同时作用到一个元素上,权重高者生效。
权重的不同,是你所期望的效果,没有通过css规则在元素上生效的主要原因。
权重的级别根据选择器被划分为四个分类:行内样式,id,类与属性,以及元素。
如果两个选择器权重值相同,则最后定义的规则被计算到权重中(后面定度的CSS规则权重要更大,会取代前面的CSS规则)。
如果一条规则包含了更高权重的选择器,那么这个规则权重更高。
内联样式表含有比别的规则更高的权重。

3、权重等级

每个选择器在权重级别中都有自己泾渭分明的位置。根据选择器种类的不同可以分为四类,也决定了四种不同等级的权重值。
从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10,一个元素名,或者伪元素+1.

4、权重的规则

1、相同的权重:以后面出现的选择器为最后规则:
假如在外部样式表中,同一个CSS规则你写了两次,那么出现在前面的选择器权重低,你的样式会选择后面的样式

#content h1 {
  padding: 5px;
}
#content h1 {
  padding: 10px;
}
/*
    两个选择器的权重都是0,1,0,1,最后那个规则生效。
*/

2、不同的权重,权重值高则生效
选择器可能会包含一个或者多个与权重相关的计算点,若经过计算得到的权重值越大,则认为这个选择器的权重高。
3、如果两个选择器权重值相同,则最后定义的规则被计算到权重中(后面定度的CSS规则权重要更大,会取代前面的CSS规则)

5、!important

!important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权。语法格式{ cssRule !important }。
应当注意的是!important是对整条样式的声明,包括这个样式的属性和属性值。
非到万不得已不要用!important。

参考网址

https://www.w3cplus.com/css/the-important-css-declaration-how-and-when-to-use-it.html
https://www.w3cplus.com/css/css-specificity-things-you-should-know.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,686评论 1 92
  • 【目录】 css的三大特性层叠性特性说明原理DEMO继承性优缺点重点DEMOhtml代码css代码优先级css特殊...
    顽皮的雪狐七七阅读 5,105评论 0 0
  • 1、css的语法规则 由css选择器(selector),以及一条或多条声明组成,用冒号分开 举例:selecto...
    疯狂的蜗牛Dianna阅读 5,120评论 0 0
  • 这篇是基于CSS选择器的,如果对选择器不太了解可以先看另一篇CSS选择器 (一)什么是CSS权重? 权重决定了你C...
    07120665a058阅读 6,488评论 2 4
  • 场景 为什么我在这里设置的css样式不起作用?可能你在某处定义了一个更高权重的规则,导致此处规则不生效。 什么是权...
    seafruit阅读 1,872评论 1 1