前端面试题-CSS优先级

1、选择器优先级

浏览器经过优先级来判断哪一些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级是基于 不一样种类选择器组成的匹配规则。

2、优先级计算

优先级就是分配给指定的CSS声明的一个权重,它由匹配的选择器中的每一种选择器类型的 数值 决定。前端

而当优先级与多个CSS声明中任意一个声明的优先级相等的时候,CSS中最后的那个声明将会被应用到元素上。面试

当同一个元素有多个声明的时候,优先级才会有意义。由于每个直接做用于元素的CSS规则老是会接管/覆盖(take over)该元素从祖先元素继承而来的规则。segmentfault

3、优先级顺序

3.1 选择器权重值

图片描述

3.2 从大到小

内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 元素(类型)选择器 = 伪元素选择器浏览器

3.2 注意

通配选择符(universal selector)(*), 关系选择符(combinators) (+, >, ~, ' ') 和 否认伪类(negation pseudo-class)(:not()) 对优先级没有影响。(可是,在 :not() 内部声明的选择器是会影响优先级)。spa

4、特殊的 !important 规则

4.1 说明

当在一个样式声明中使用一个 !important 规则时,此声明将覆盖任何其余声明。虽然技术上 !important 与优先级无关,但 !important 却又与 CSS 优先级直接相关。调试

4.2 破坏级联规则

使用 !important 是一个坏习惯,应该尽可能避免,由于这破坏了样式表中的固有的级联规则 使得调试找 bug 变得更加困难了。当两条相互冲突的带有 !important 规则的声明被应用到相同的元素上时,拥有更大优先级的声明将会被采用。blog

扩展阅读 前端面试题-CSS选择器继承

相关文章
相关标签/搜索