考察点分析

该题目主要考察以下核心能力维度:

  1. CSS基础语法掌握:对各类选择器分类及书写方式的熟练程度
  2. 样式层叠机制理解:优先级计算规则与权重叠加原理的认知深度
  3. 异常场景处理能力:!important特殊标记与其他优先级规则的协同机制

具体技术评估点:

  • 基础选择器类型识别(元素/类/ID)
  • 属性选择器与伪类/伪元素的使用场景
  • 组合选择器的符号区别(>, +, ~等)
  • 优先级计算的四位权重模型
  • !important的穿透特性与冲突处理

技术解析

关键知识点

选择器优先级 > !important机制 > 内联样式优先级 > 继承机制

原理剖析

CSS优先级采用4列权重模型(0,0,0,0):

  1. 第一列:内联样式(style属性)
  2. 第二列:ID选择器数量
  3. 第三列:类/属性/伪类选择器数量
  4. 第四列:元素/伪元素选择器数量

比较规则:从左到右逐级比对,数值大者胜出。!important标记具有最高优先级,但存在多个!important时继续按权重比较。内联样式的!important优先级高于外部样式表的!important。

常见误区

  • 误将权重计算当作十进制(如.class的10分)
  • 忽略通配符(*)不影响优先级
  • 认为继承样式具有优先级(实际最低)
  • 混淆伪类(:hover)与伪元素(::before)

问题解答

选择器类型列举

  1. 元素选择器(div)
  2. 类选择器(.container)
  3. ID选择器(#header)
  4. 属性选择器([type=“text”])
  5. 伪类选择器(:hover)
  6. 伪元素选择器(::before)
  7. 通配选择器(*)
  8. 后代选择器(div span)
  9. 子元素选择器(ul > li)
  10. 相邻兄弟选择器(h1 + p)
  11. 通用兄弟选择器(h1 ~ p)
  12. 否定伪类(:not())
  13. 结构化伪类(:nth-child())
  14. 自定义属性选择器([data-*])

优先级判定示例

当同时存在:

  #content { color: red !important; } /* ID+!important */
<div style="color: blue">...</div> /* 内联样式 */
  

生效顺序:

  1. 带!important的ID选择器
  2. 普通内联样式
  3. 不带!important的ID选择器
  4. 其他常规选择器

深度追问

如何覆盖带有!important的样式?

提示:通过更具体的!important声明 或 提升选择器权重

CSS变量能否被!important修饰?

提示:变量声明不能,但使用时可组合

伪元素是否参与权重计算?

提示:参与,与元素选择器同级

Last updated 06 Mar 2025, 13:07 +0800 . history