

新闻资讯
技术学院根本解法是用语义清晰的类名替代结构依赖,如将 .card .content p 改为 .card-text;优先采用BEM命名、分离结构与样式类、限制嵌套≤3层,并借助CSS Modules实现作用域隔离。
直接用多层嵌套选择器(比如 .header .nav .menu .item a:hover)会让样式耦合 HTML 结构,一旦改结构或复用组件,样式就容易失效或误触。根本解法不是“少写几层”,而是用语义清晰、作用明确的类名来承接样式责任。
避免靠父级元素“猜”当前元素身份,给关键元素直接加描述性类名。比如把:
正文
中 p 的样式从 .card .content p 改为 .card-text。这样即使将来 p 搬到别处,只要加了 class="card-text" 就能保持样式一致。
card__title、card--featured),明确模块归属和状态.red、.mt-16),除非在原子 CSS 或设计系统中统一管控HTML 中可同时使用多个类,把“结构角色”和“视觉表现”分开声明。例如:
其中 btn 定义基础按钮行为(重置默认、内边距、光标等),btn--primary 控制颜色和边框,btn--large 控制尺寸。修改某一方面样式时,只动对应类,不牵连结构。
btn)负责通用行为和最小样式btn--primary)只覆盖必要属性,不重复定义基础类已有的规则btn--loading)不是禁止嵌套,而是设上限。多数项目建议不超过 3 层(如 .modal .modal-header h2)。超过即预警——很可能该提取成独立组件或加新类名。
max-nesting-depth 规则)自动拦截过深选择器在支持模块化 CSS 的环境(Vue、React + CSS Modules、Svelte 等)中,让类名天然带哈希后缀,彻底避免全局污染和意外覆盖。此时即使写 .content p,实际也只作用于当前组件内,维护压力大幅降低。
title、list-item),无需强加前缀