通过link标签、内联样式和JavaScript动态插入三种方式引入CSS,其中link默认阻塞渲染;2. 使用rel="preload"预加载关键CSS并异步应用,提升首屏速度;3. 对非关键CSS设置media属性或JS延迟加载,减少主线程阻塞;4. 实践建议内联关键CSS、预加载重要资源、延迟非关键资源,并结合构建工具自动化优化。
在现代前端开发中,CSS的引入方式不仅影响页面渲染效果,还直接关系到性能表现。合理使用CSS加载策略,能有效减少阻塞、提升首屏速度。核心目标是让关键CSS尽早加载,非关键资源延迟或异步处理。
HTML中引入CSS主要有三种方式:
默认情况下,link引入的CSS会阻塞页面渲染,直到文件下载并解析完成。这对非关键CSS不友好,容易拖慢首屏展示。
利用 rel="preload" 可提前告知浏览器某些资源的重要程度,促使浏览器尽早开始下载,而不阻塞渲染。
对于关键CSS,可以这样预加载:
这里的关键点:
这种模式实现了“预加载 + 异步应用”,既提前下载,又不阻塞渲染。
CSS本身没有 defer 属性,但可以通过脚本控制加载时机,模拟 defer 行为。
适用于非首屏需要的CSS,例如主题、打印样式或组件级样式。
示例代码:
初始设置 media="print" 可防止立即应用,等 onload 后再改为 all,实现延迟激活。
另一种方式是完全由JS控制:
这种方式确保非关键CSS在主内容渲染后再加载,减少主线程压力。
优化CSS加载的核心思路是:关键路径内联,其余预加载+异步加载。
配合构建工具(如Webpack、Vite),可自动拆分和注入关键CSS,提升自动化程度。
基本上就这些,掌握 preload 与动态加载的组合用法,就能在不影响视觉的前提下显著优化页面性能。