多个 标签按 HTML 中顺序加载和应用,后引入的 CSS 会覆盖同名选择器声明;典型分层顺序为 reset → base → layout → theme → page;生产环境应合并 CSS 以提升性能。
标签会按 HTML 中的顺序加载和应用浏览器解析 HTML 时, 标签是**阻塞渲染**的,且样式表会按出现顺序逐个下载、解析、层叠。后引入的 CSS 会覆盖前面同名

常见错误现象:
– 修改了 theme.css 中的 .btn 颜色,但页面没变 → 实际是 base.css 在它后面引入,又重写了同一规则;
– 使用开发者工具检查元素,发现计算样式来自意外的文件 → 检查 中 的顺序是否与预期相反。
具有更高层叠权重(相同优先级下) 默认为 media="all",若某条设了 media="print",它不会参与屏幕样式层叠#header .nav li a:hover),否则调试时难以追踪来源典型分层结构应是:重置/标准化 → 基础组件 → 布局 → 主题/覆盖 → 页面专属。例如:
这样能确保:
– reset.css 清除默认样式,不被后续文件意外继承干扰;
– base.css 定义通用类(.btn, .card),供所有页面复用;
– theme-dark.css 只需覆盖颜色变量和背景,不用重写结构;
– page-home.css 最后加载,可精准调整本页特殊布局,且不会污染其他页面。
.mt-2, .text-center)放在最前——它们应位于基础组件之后、主题之前,否则会被主题色覆盖掉 margin 或 text-align@import 替代 ,会引发额外 HTTP 请求和阻塞,且无法并行下载,性能更差 是否被禁用或加载失败顺序正确 ≠ 一定生效。常见干扰项:
的 href 路径 404(检查浏览器 Network 面板中 status 是否为 404 或 500)Content-Type: text/plain 而非 text/css,导致浏览器拒绝解析disabled="true" 属性(合法但极少用),或 JS 动态设置了 link.disabled = true
快速验证方式:在开发者工具 Elements 面板中右键 标签 → “Force element state” → 确保未勾选 :disabled;再点开该标签的 href 链接,看是否能直接打开 CSS 内容。
的实际影响每个 都是一个独立的网络请求。HTTP/1.1 下可能触发连接数限制(通常 6 个并发),造成排队延迟;HTTP/2 虽支持多路复用,但过多小文件仍增加 TLS 握手和头部开销。
mini-css-extract-plugin) 中(避免渲染阻塞),其余非关键 CSS 用 media="print" onload="this.media='all'" 异步加载
critical.css + 异步加载剩余样式,往往比 5 个各 3KB 的 更快顺序本身没问题,但数量和体积会真实拖慢用户看到内容的时间——这点容易被忽略,尤其在只关注“样式对不对”而不管“多久出来”的时候。