將 CSS 拆分為與 @media 相關的檔案,以顯著提升效能

分類: Core Web VitalsCSSHTMLWebWeb Performance
Save and Share:

當 CSS 打包成單一檔案時,即使經過 tree-shaking,由於不同的 @media 環境(行動裝置、平板、桌機、深色/淺色/其他主題等),仍然包含許多未使用的 CSS。

這對 Core Web Vitals 不利:首次輸入延遲 (FID)、最大內容繪製 (LCP)、累積版面配置偏移 (CLS),以及其他重要的效能和可用性指標:首次內容繪製 (FCP)、總封鎖時間 (TBT)、可互動時間 (TTI) 和 DOMContentLoaded 事件。

有一種方法可以透過將 CSS 分割成不同的檔案來顯著改善 CSS 的載入和渲染效能,其中每個檔案僅包含該環境所需的程式碼。

將您的 CSS 分割成不同的檔案:

📄main.css        - 包含所有 @media 條件所需的 CSS
📄screen.css      - 僅包含螢幕 @media 條件所需的 CSS
📄print.css       - 僅包含列印 @media 條件所需的 CSS
📂breakpoints
    📄x-small.css - 僅包含超小斷點所需的 CSS
    📄sm.css      - 僅包含小斷點所需的 CSS
    📄md.css      - 僅包含中斷點所需的 CSS
    📄lg.css      - 僅包含大斷點所需的 CSS
    📄xl.css      - 僅包含特大斷點所需的 CSS
    📄xxl.css     - 僅包含超特大斷點所需的 CSS
📂themes
    📄light.css   - 僅包含淺色主題所需的 CSS
    📄dark.css    - 僅包含深色主題所需的 CSS

然後,像這樣引入 CSS 檔案:

<link rel="stylesheet" href="main.css" media="all">
<link rel="stylesheet" href="screen.css" media="screen">
<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="x-small.css" media="(max-width: 575px)">
<link rel="stylesheet" href="sm.css" media="(min-width: 576px)">
<link rel="stylesheet" href="md.css" media="(min-width: 768px)">
<link rel="stylesheet" href="lg.css" media="(min-width: 992px)">
<link rel="stylesheet" href="xl.css" media="(min-width: 1200px)">
<link rel="stylesheet" href="xxl.css" media="(min-width: 1400px)">
<link rel="stylesheet" href="light.css" media="(prefers-color-scheme: light)">
<link rel="stylesheet" href="dark.css" media="(prefers-color-scheme: dark)">

透過這種方法,現代瀏覽器會優先載入目前 @media 條件所需的 CSS,因此頁面渲染速度會快得多,因為使用者不需要等待載入未使用的 CSS 部分。
如果您將所有 CSS 打包在一個檔案中,並且未在 link 標籤的 media 屬性中指定條件,則瀏覽器會等待整個 CSS 集合載入完成後才開始頁面渲染。這會大幅減慢頁面渲染速度。

此範例中的斷點基於 Bootstrap 5。 鑑於他們即將新增對淺色/深色/其他主題的支援,這種方法對於 Bootstrap 來說將變得更加重要。

如果您想讓網路變得更好、更快,請:

  • 分享這篇文章,
  • 將這篇文章發送給您使用的框架開發人員,
  • 在您的網站上實作這種 CSS 分割方法。

在社群媒體上分享或稍後儲存:

如果您想閱讀更多關於此最佳化和瀏覽器行為的資訊,請參閱以下內容:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *