css选择器的使用规范

优先使用类选择器并遵循语义化命名(如BEM),避免深层嵌套和过度使用ID、通用选择器,控制伪类与属性选择器复杂度,杜绝滥用内联样式和!important,提升CSS性能与可维护性。

CSS选择器的使用应兼顾性能、可维护性和语义清晰。合理的选择器结构能让样式更稳定,减少冲突,并提升页面渲染效率。

1. 优先使用类选择器(class)

类选择器是构建可复用样式的最佳方式,推荐使用语义化、易于理解的命名。

• 避免使用标签选择器或ID选择器定义通用样式。
• 使用BEM等命名规范(如 .btn__primary--large)增强可读性与模块化。
• 类名小写,用连字符(-)分隔单词,避免下划线或驼峰。

2. 避免过度嵌套和深层选择器

深层嵌套会增加选择器权重,降低性能,并使样式难以维护。

• 尽量控制层级不超过三层,例如:.header .nav .link 已算较深。
• 避免使用 #id .class div span a 这类冗长表达式。
• 推荐扁平化结构,依赖类名而非结构定位。

3. 慎用ID选择器

ID在页面中应唯一,且其优先级过高,不利于样式覆盖。

• 不用于定义样式,更适合JavaScript操作或锚点定位。
• 若必须使用,确保不会引起样式冲突或重复。

4. 避免使用通用选择器 *

* 选择器匹配所有元素,影响渲染性能。

• 特别是在大型项目中,重置样式建议使用更精确的方式(如 margin: 0; padding: 0 只应用于特定标签)。
• 如需全局重置,可考虑使用CSS Reset或Normalize.css。

5. 合理使用伪类和属性选择器

伪类(如 :hover, :focus)和属性选择器(如 [type="text"])功能强大,但需注意性能。

• 伪类保持简洁,如 .btn:hover 而非 div a.btn:hover
• 属性选择器避免过于复杂,如 [class*="btn"] 可能匹配意外元素。

6. 不要使用内联样式和!important(除非必要)

内联样式和 !important 破坏层叠逻辑,难于维护。

• 仅在临时调试或第三方库无法覆盖时使用。
• 通过提高选择器 specificity 或调整样式表顺序来解决问题。

基本上就这些。写选择器时多思考“是否容易理解”、“是否容易复用”、“会不会影响别人”,就能写出更专业的CSS。不复杂但容易忽略。