深入CSS(2) - CSS 三大特性 | 青训营笔记

170 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天

CSS 三大特性

  • 层叠性
  • 继承性
  • 优先级

层叠性

  • 层叠性是多种CSS样式的叠加,是浏览器处理样式冲突的方式。在HTML中对于同一个元素可以有多个CSS样式存在,当有相同权重的样式存在时,会根据这些样式出现的先后顺序来决定,处于最后面的CSS样式将会覆盖前面的CSS样式。
  • 样式不冲突,不会层叠
  • 层叠规则:开发者样式>用户样式>浏览器样式

继承性

  • 对于字体、字号、颜色、行距等文本类属性具有继承性
  • 边框、外边距、内边距、背景、定位、元素高度等与块级元素相关的属性都不具有继承性
  • 所有的属性都可以设置 inherit 实现继承,默认不继承的属性取属性的初始值(时相当于设置了 initial )

关于css 继承中的 unset

  • 如果该属性是默认继承属性,该值等同于 inherit
  • 如果该属性是非继承属性,该值等同于 initial

更多内容参考:谈谈一些有趣的CSS题目(23)-- 谈谈 CSS 关键字 initial、inherit 、unset 和 revert · Issue #13 · chokcoco/iCSS · GitHub

优先级

在复杂的CSS样式规则中不总是按照层叠性表现,而这就是典型的优先级规则

处理优先级问题,首先要考虑权重

选择器权重
通用选择器 / 继承0, 0, 0, 0
元素选择器(标签选择器)0, 0, 0, 1
类选择器,伪类选择器,属性选择器0, 0, 1, 0
id选择器0, 1, 0, 0
行内样式1, 0, 0, 0
!important无限高
  • 对于简单选择器:遵照这个规则
  • 对于组合选择器:需要按照选择器求和权重进行计算

计算规则:

  1. 多个同级权重的选择器求和没有进制,也就是说,如果有 12 个类选择器,也不会进制到前一位,选择器权重为 0,0,12,0,依然没有一个 id 选择器权重高(某些浏览器256个类选择器可以超越一个id选择器,这条规则可以忽略不计)
  2. 比较规则:从左往右逐项比较,如果某一项高于其他规则则不看后面的权重,例如 0, 2, 0, 0 高于 0, 1, 15, 2
  3. 对于相同权重的选择器遵循层叠性规则!important 可以被后出现的 !important 层叠掉

注意
js 操作 css 原理:js 并不能修改 css 样式及 css 文件,而是添加了行内样式,提高选择器的权重,因此,也可以被 !important 覆盖掉