关键CSS提取后样式错乱怎么办?
我用 Webpack 的 mini-css-extract-plugin 把关键 CSS 单独抽出来了,但首页加载时布局直接崩了,字体、间距全不对。
明明在 <head> 里内联了关键 CSS,非关键的也用 media="print" 延迟加载了,怎么还是乱?
关键 CSS 是这样插入的:
<style>
.header { font-size: 18px; margin: 0; }
.hero { display: flex; padding: 20px; }
</style>
后来发现有些样式被覆盖了,是不是关键 CSS 没包含完整的选择器?或者优先级出问题了?
建议改成用专门的工具生成关键 CSS,比如 Penthouse 或者 Critical 这种能自动分析页面依赖的库。手写很容易漏掉一些重要样式。
另外注意优先级问题,如果全局样式和关键 CSS 里有冲突的选择器,可能需要调整 specificity。比如说你原来的 .header 样式可能被其他地方更具体的选择器覆盖了。
虽然不太喜欢用 !important,但临时排查问题时可以试试。最后记得检查下延迟加载的非关键 CSS 文件是否正确设置了 media 属性,有时候缓存也会捣乱,清一下浏览器缓存再试试效果。
box-sizing: border-box)和body/html基础样式漏掉了,导致首屏计算规则缺失。手动提取时千万别只拿组件类,把 Reset 也塞进去,另外检查提取的选择器优先级是不是太低,否则完整包加载后会覆盖掉你的内联样式。