Skip to content

如何防止 CSS 阻塞渲染?

Posted on:2024年8月15日 at 23:23

CSS 阻塞渲染是指浏览器在加载和解析 CSS 时,会阻止页面的渲染,直到 CSS 被完全下载和解析完毕。这会导致页面加载变慢。以下是一些防止或减轻 CSS 阻塞渲染的策略:

1. 使用 media 属性

通过使用 media 属性将 CSS 文件标记为在特定条件下才需要加载,可以防止不必要的 CSS 阻塞渲染。

<link
  rel="stylesheet"
  href="styles.css"
  media="print"
  onload="this.media='all'"
/>

2. 将 CSS 文件置于 <head>

虽然将 CSS 文件放在 <head> 部分会阻塞渲染,但它是保证页面样式准确加载的必要方式。要确保在 <head> 部分中尽量精简和优化 CSS 以减少阻塞时间。

3. 内联关键 CSS

将关键 CSS 直接嵌入到 HTML 的 <head> 中,减少外部请求:

<style>
  /* 关键 CSS 代码 */
  body {
    margin: 0;
    font-family: Arial, sans-serif;
  }
  /* 其他关键样式 */
</style>

4. 延迟加载非关键 CSS

使用 rel="preload"rel="stylesheet" 来延迟加载非关键 CSS 文件,这些 CSS 文件对首屏渲染不是必需的:

<link
  rel="preload"
  href="non-critical.css"
  as="style"
  onload="this.rel='stylesheet'"
/>

5. 使用 CSS 分块

将 CSS 文件拆分为多个较小的文件,仅加载当前视图所需的 CSS 文件。这样可以减少单个 CSS 文件的体积,提高加载效率。

<link rel="stylesheet" href="main.css" />
<link rel="stylesheet" href="home.css" media="(min-width: 600px)" />

6. 优化 CSS 文件

7. 使用 CSS 自定义属性(变量)

尽量减少 CSS 文件中的重复代码,使用 CSS 变量来优化样式的管理。

:root {
  --primary-color: #3498db;
}
body {
  color: var(--primary-color);
}
原文转自:https://fe.ecool.fun/topic/d598569e-a03a-4110-bdbc-fd0c9f0ca18d