通过link标签、内联样式和JavaScript动态插入三种方式引入CSS,其中link默认阻塞渲染;2. 使用rel="preload"预加载关键CSS并异步应用,提升首屏速度;3. 对非关键CSS设置media属性或JS延迟加载,减少主线程阻塞;4. 实践建议内联关键CSS、预加载重要资源、延迟非关键资源,并结合构建工具自动化优化。

在现代前端开发中,CSS的引入方式不仅影响页面渲染效果,还直接关系到性能表现。合理使用CSS加载策略,能有效减少阻塞、提升首屏速度。核心目标是让关键CSS尽早加载,非关键资源延迟或异步处理。
常见的CSS引入方式
HTML中引入CSS主要有三种方式:
- link标签引入:通过 css"> 引入外部样式表,浏览器会将其作为渲染阻塞资源,优先下载并解析。
- 内联样式(inline CSS):将CSS写在
- JavaScript动态插入:通过JS创建link或style节点,可实现异步加载,但需注意插入时机对渲染的影响。
默认情况下,link引入的CSS会阻塞页面渲染,直到文件下载并解析完成。这对非关键CSS不友好,容易拖慢首屏展示。
preload与预加载优化
利用 rel="preload" 可提前告知浏览器某些资源的重要程度,促使浏览器尽早开始下载,而不阻塞渲染。
立即学习“前端免费学习笔记(深入)”;
对于关键CSS,可以这样预加载:
这里的关键点:
- as="style" 明确资源类型,避免 MIME 类型警告。
- onload 触发时切换 rel 为 stylesheet,真正应用样式。
- this.onload=null 防止重复执行。
这种模式实现了“预加载 + 异步应用”,既提前下载,又不阻塞渲染。
defer技巧与非关键CSS延迟加载
CSS本身没有 defer 属性,但可以通过脚本控制加载时机,模拟 defer 行为。
适用于非首屏需要的CSS,例如主题、打印样式或组件级样式。
示例代码:
初始设置 media="print" 可防止立即应用,等 onload 后再改为 all,实现延迟激活。
另一种方式是完全由JS控制:
这种方式确保非关键CSS在主内容渲染后再加载,减少主线程压力。
综合实践建议
优化CSS加载的核心思路是:关键路径内联,其余预加载+异步加载。
- 将首屏必需的CSS内联到 中,避免往返请求。
- 使用 preload 预加载重要但非内联的CSS,并通过 onload 转换为 stylesheet。
- 非关键CSS延迟到页面 load 或交互后加载。
- 结合 HTTP/2 Server Push 或 Preconnect 提升传输效率(视场景而定)。
配合构建工具(如Webpack、Vite),可自动拆分和注入关键CSS,提升自动化程度。
基本上就这些,掌握 preload 与动态加载的组合用法,就能在不影响视觉的前提下显著优化页面性能。










