最直接有效的方式是采用命名空间式类选择器,即为类名添加项目/模块前缀(如user-profile-),按“前缀-功能-状态”格式命名,避免语义化单词重复,并禁用嵌套选择器与!important。
避免 CSS 选择器冲突最直接有效的方式,是让类名自带“作用域”——也就是采用命名空间式类选择器。它不依赖 HTML 结构嵌套或 CSS 优先级硬拼,而是从源头上隔离样式影响范围。
给每个功能模块或业务区域的类名加上明确前缀,比如 user-profile-、cart-sidebar-、admin-dashboard-。所有相关样式都只作用于带该前缀的类,天然避开全局污染。
product-card-hover、form-input-error
title、list),这类名称极易在不同模块中重复出现
ESLint 或 Stylelint 插件做提交前校验不要依赖 .sidebar .item .label 这类多层嵌套选择器来限定作用域——它脆弱、难维护,且一旦 DOM 结构微调就失效。改用单一层级、带命名空间的类名:
.sidebar .item .label { color: #333; }
.sidebar-item-label { color: #333; }
引入 Ant Design、Element Plus 等库时,别直接用原始类名(如 .el-button)。在项目中包裹一层自有命名空间:
ui-button-primary 类,内部通过 @apply(Tailwind)或 composes(CSS Modules)复用库的样式ID 选择器权重高但不可复用;!important 会破坏层叠逻辑,让后续维护变成猜谜。命名空间方案的价值,就在于用清晰的命名代替暴力压制:
xxx-button 类生效了”,排查路径立刻变短