📚前端面试题速记
Q12

CSS 选择器的优先级如何计算?

速记答案(30 秒)

行内 > ID > class/伪类/属性选择器 > 标签/伪元素 > 通配符。数字模型:inline(1,0,0,0)、id(0,1,0,0)、class(0,0,1,0)、标签(0,0,0,1)。同级比较,大的胜出;相同则后写的覆盖。

📖 详细讲解

标准面试回答(推荐记住)

CSS 选择器优先级可以用四元组数字模型来记忆。行内样式是 1,0,0,0;ID 选择器是 0,1,0,0;类选择器、伪类、属性选择器是 0,0,1,0;标签选择器和伪元素是 0,0,0,1。比较时从左往右,数字大的胜出。如果优先级完全相同,则后写的样式覆盖先写的。!important 可以强制提升优先级,但应该尽量避免使用。

优先级权重

选择器 权重
!important 最高(慎用)
行内 style 1,0,0,0
ID #id 0,1,0,0
class/伪类/属性 0,0,1,0
标签/伪元素 0,0,0,1
通配符 * 0,0,0,0

面试要点

  • 记住四元组权重模型
  • 从左到右比较
  • 避免滥用 !important

💻 代码示例

优先级计算示例
/* 0,0,0,1 */
p { color: black; }

/* 0,0,1,0 */
.text { color: blue; }

/* 0,0,1,1 */
p.text { color: green; }

/* 0,1,0,0 */
#main { color: red; }

/* 0,1,1,1 - 最高 */
#main p.text { color: purple; }