.wrap .inner .content这样的选择器就全挂掉了,找都找不回来。
性能方面呢?语义标签本身不增加体积,但能让CSS选择器更精准。比如用main > article h2代替.page-content .post-title,既减少了特异性冲突,又避免了因class名重复导致的样式错位。
只包页面顶部内容(logo+主导航),不用在模块内部当作标题栏必须是独立语义单元——页脚链接、侧边栏菜单这些不属于范畴全页唯一,不可嵌套,代表用户核心内容,不是“主要内容区”这种模糊概念需要有明确主题,配或更高阶标题,不能当成万能容器用
重构时最容易被忽略的“隐性耦合点”
很多人以为抽离CSS、改class名就完成解耦了,结果上线后发现JS脚本开始报错:document.querySelector('.old-header-nav')找不到节点。这背后的问题在于,JS经常通过class名定位DOM,而CSS重构时没有同步更新JS里的选择器。
真正的解耦不是消灭所有关联,而是让关联变得可控、可追踪。最稳妥的方式是用js-前缀隔离JS钩子:HTML里写,CSS只操作.header-nav,JS只认.js-header-nav。这样一来,CSS层的改动不影响JS,JS层加功能也不污染样式,各自安好。
另一个坑是CSS自定义属性(--color-primary)的跨文件管理。如果theme.css定义了--color-primary: #007bff,而components.css直接用了color: var(--color-primary),那theme文件缺失时,整个组件就会“失色”。所以,必须确保CSS变量有fallback值,比如写成color: var(--color-primary, #007bff),以防不测。













