全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-16 5 分钟 ✍️ juanwangdev

避免 @import

@import 在 CSS 中引入其他样式表,但存在性能问题。

问题分析

串行加载

CSS
/* style.css */
@import url('reset.css');
@import url('base.css');
@import url('components.css');

浏览器加载流程:

  1. 加载 style.css
  2. 解析发现 @import
  3. 串行加载 reset.css
  4. 解析发现下一个 @import
  5. 串行加载 base.css ...

结果:多个请求串行执行,总时间累加。

阻塞渲染

HTML
<link rel="stylesheet" href="style.css">

style.css 中的 @import 样式会阻塞渲染,直到所有导入文件加载完成。

正确做法

使用 link 标签

HTML
<!-- 好:并行加载 -->
<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="components.css">

多个 link 标签并行加载,总时间取最慢的一个。

预加载优化

HTML
<!-- 预加载关键 CSS -->
<link rel="preload" href="critical.css" as="style">
<link rel="stylesheet" href="critical.css">

对比总结

方式加载方式渲染影响推荐程度
@import串行阻塞渲染★☆☆☆☆
<link>并行阻塞渲染★★★★☆
<link preload>并行+预加载更快★★★★★

何时可以使用 @import

仅在 CSS 预处理或构建工具中使用:

scss
// Sass/SCSS 中使用 @import(编译时合并)
@import 'variables';
@import 'mixins';
@import 'components';

构建工具会将多个文件打包成一个,不存在运行时串行问题。

要点总结

  • @import 导致串行加载,阻塞渲染
  • 使用多个 link 标签实现并行加载
  • 预加载关键 CSS 进一步提升性能
  • 预处理中的 @import 在构建时合并,可正常使用

📝 发现内容有误?点击此处直接编辑

← 上一篇 图片优化与 CSS Sprites
下一篇 → 重排与重绘
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库