Skip to content

CSS特性

继承性

某些 CSS 属性会 自动从父元素继承到子元素, 即使子元素没有显式设置这些属性。

常见的可继承属性:

分类可继承属性说明
文本类colorfont-familyfont-sizefont-stylefont-weightletter-spacingword-spacingline-heighttext-aligntext-indenttext-transformvisibility常见的文字样式会继承
列表类list-stylelist-style-typelist-style-positionlist-style-image列表样式会继承
表格类caption-sideborder-collapse表格标题与边框样式
光标类cursor鼠标样式可继承

合理利用继承性:

如果需要调整某些子元素中的文字效果,我们可以直接在父元素中设置,而不必使用关系选择器(>)精确定位设置文本样式

层叠性

层叠性(Cascading) 指的是当多个 CSS 规则作用到同一个元素上时,浏览器根据优先级、来源和顺序来决定最终生效的样式。

换句话说:CSS 样式是“叠上去的”,浏览器按照规则筛选最后显示哪一条

优先级

当多个选择器作用于同一个元素时,浏览器会根据 优先级来决定哪个样式生效。

  • 行内样式 > ID 选择器 > 类、伪类、属性选择器 > 标签、伪元素选择器
  • 权重是4位数字组成的

权重理论模型

级别计分优先级高低
行内样式1,0,0,01
ID 选择器0,1,0,02
类选择器、属性选择器、伪类0,0,1,03
元素选择器、伪元素0,0,0,14
通配符、继承、!important 特殊情况不计分(特殊规则)特殊说明见下

!important 不属于优先级计算,但 会覆盖所有非 !important 的规则(包括行内样式)。

如果多个规则都使用了 !important,则仍按优先级比较。

行内样式的优先级非常明确、且不属于 CSS 文件本身。所以 VS Code 和 DevTools 都用 3 位数 来表示选择器特征优先级(省去第1位)

级别计分优先级高低
ID 选择器1,0,01
类选择器、属性选择器、伪类0,1,02
元素选择器、伪元素0,0,13

权重叠加

当一个选择器由多个部分组成时,浏览器会把各个部分的权重相加,得到整个选择器的总优先级。

css
div > .tip { ... }
  • div的权重是001
  • .tip的权重是010
  • 因此该选择器的权重是011

提示

CSS 的权重叠加是“按位相加”,不是进位加法,不会出现满10进1的情况