前端/移动开发面试题更新 2026-08-05

请说明 CSS 样式优先级的具体计算方法,包括选择器特异性、重要声明和来源顺序等因素如何共同影响最终样式的应用。

前端/移动开发技术原理CSS

考察说明

考查对 CSS 层叠机制和优先级计算规则的掌握程度。

回答思路

  1. 【回答框架 1】CSS 优先级由特异性、重要性和来源顺序共同决定。特异性计算规则:行内样式为 1000,ID 选择器为 100,类、属性、伪类为 10,元素、伪元素为 1,通配符为 0;同等特异性时后声明的样式覆盖先声明。
  2. 【回答框架 2】!important 声明优先于普通声明,但同是 !important 时仍按特异性和来源顺序比较。来源顺序由低到高:用户代理、用户、作者、作者 !important、用户 !important,浏览器最终采用优先级最高的来源。
  3. 【回答框架 3】层叠算法按重要性、来源、特异性、书写顺序依次比较:先比较是否带 !important,再比较来源,然后比较特异性,最后比较书写顺序。同一选择器内的多条声明分别按此规则决定。
  4. 【回答框架 4】特殊情形:继承样式优先级最低,通配符选择器优先级高于继承;:not()、:is() 等伪类内部参数参与计算,但伪类本身不计入。计算时可将各层累加得分,满分可达千位级。
  5. 【回答框架 5】实际项目中建议避免过度依赖 !important 和深层嵌套,通过规范类名和 BEM 等方法控制特异性,保证样式可维护性和可预测性。
  6. 【关键点 1】行内样式 > ID 选择器 > 类/属性/伪类 > 元素/伪元素,通配符为 0。
  7. 【关键点 2】!important 提升声明优先级,但同级仍需比较特异性和来源。
  8. 【关键点 3】后声明的样式在特异性相同时覆盖先声明样式。
  9. 【关键点 4】继承样式优先级低于任何显式声明。
  10. 【关键点 5】避免滥用 !important 和深层嵌套,使用规范命名管理优先级。
  11. 【易错点 1】误将多个类选择器得分直接相加导致优先级计算错误,应逐级比较而非数值相加。
  12. 【易错点 2】忽略 !important 对来源顺序的影响,导致样式覆盖不符合预期。
  13. 【易错点 3】将 :not() 本身计入特异性,实际应计算其内部参数的特异性。