css的权重

306 阅读3分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

css选择器(selector)

css有五大选择器:元素选择器,类选择器,ID选择器,属性选择器和派生选择器
1. 元素选择器
元素选择器是我们最常见的一类选择器,在HTML文档中该选择器通常是指某种HTML元素,例如:p,h2,span,a,div乃至html

2. 类选择器
(1)单类选择器:单纯的元素选择器能实现的功能还是过于有限,比如我们希望在文档中突出加粗显示某种重要的内容,但又不能确定这份内容会出现在那种元素中,或者它可能会出现在多宗不同的元素中。这个时候,我们可以考虑使用类选择器(class selector)
(2)多类选择器:在时间的做法中,元素的class属性可能不止由一个简单单词命名,有时候需要用一串单词来表明该元素。比如有些元素包含一个‘one’类,某些元素包含一个‘two’类。某些元素同时包含‘one two’类。属性名出现的顺序没有关系。此时如果使用:.one.two{} 去描述一个元素,则将同时选中拥有这两种属性任意一种属性的元素。

3. ID选择器
id选择器可以标记HTML中的某项元素,其表现形式与类选择器十分相似,但差别也十分显著。首先一个元素不能像类元素一样拥有多个类,一个元素只能拥有一个唯一的ID属性。其次一个ID值在一个HTML文件中只能出现一次,也就是说一个ID只能唯一识别一个元素

4. 属性选择器
属性选择器可以根据元素的属性及属性值来选择元素,比如想给这个页面上的所有img图像加上阴影就可以直接上一个img{}这样的css

权重概念

权重指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性。通常,权重可通过划分多个层次指标进行判断和计算,常用的方法包括层次分析法、模糊法、模糊层次分析法和专家评价法等
权重是一个相对来说的概念,指的是对某一指标而言,它在整体评价中的相对重要程度。

css权重等级

css属性!important
>> 内联样式
> ID选择器(#id)
> 类选择器(.class) = 伪类选择器(:hover等) = 属性选择器[type等]
> 元素选择器(p等) = 伪元素选择器(:after/:before/::selection等)
> 通用选择器(*)
> 继承的样式

css优先级规则

  1. 元素的权重等级不同时,权重等级高的优先;
  2. 元素的权重等级相同时,后定义的规则优先;
  3. 在css元素后面加上!important时,该元素无条件优先;(不要轻易在全局使用)

** 特例 超越!important(该部分引自于《CSS世界》) 超越!important指的是max-width会覆盖width,而且这种覆盖不是普通的覆盖,是超级覆盖,覆盖到什么程度呢?大家应该都知道CSS世界中的!important的权重相当高,在业界,往往会把!important的权重必成“泰坦尼克”,比直接在元素的style属性中设置CSS声明还要高,一般用在CSS覆盖Javascript设置上。但是,就是这么厉害的!important,直接被max-width一个浪头就拍沉了。