Bontsd szét a CSS-t @media-val kapcsolatos fájlokra a teljesítmény jelentős javítása érdekében

Core Web Vitals, CSS, HTML, Web, Web Performance kategóriába sorolva
Save and Share:

Amikor a CSS egyetlen fájlba van csomagolva, még a tree-shaking után is sok fel nem használt CSS-t tartalmaz a különböző @media kontextusok miatt (mobil, tablet, asztali, sötét/világos/egyéb témák stb.).

Ez kedvezőtlen a Core Web Vitals mutatókra nézve: First Input Delay (FID), Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), valamint más fontos teljesítmény- és használhatósági mutatókra is: First Contentful Paint (FCP), Total Blocking Time (TBT), Time to Interactive (TTI) és a DOMContentLoaded esemény.

Van egy módszer a CSS betöltésének és renderelésének jelentős javítására a CSS külön fájlokba szervezésével, ahol minden fájl csak az adott kontextushoz szükséges kódot tartalmazza.

Bontsd külön a CSS-t fájlokra:

📄main.css        - tartalmazza az összes @media feltételhez szükséges CSS-t
📄screen.css      - csak a screen @media feltételhez szükséges CSS-t tartalmazza
📄print.css       - csak a print @media feltételhez szükséges CSS-t tartalmazza
📂breakpoints
    📄x-small.css - csak az X-Small törésponthoz szükséges CSS-t tartalmazza
    📄sm.css      - csak a Small törésponthoz szükséges CSS-t tartalmazza
    📄md.css      - csak a Medium törésponthoz szükséges CSS-t tartalmazza
    📄lg.css      - csak a Large törésponthoz szükséges CSS-t tartalmazza
    📄xl.css      - csak az Extra large törésponthoz szükséges CSS-t tartalmazza
    📄xxl.css     - csak az Extra extra large törésponthoz szükséges CSS-t tartalmazza
📂themes
    📄light.css   - csak a világos témához szükséges CSS-t tartalmazza
    📄dark.css    - csak a sötét témához szükséges CSS-t tartalmazza

Majd így illeszd be a CSS fájlokat:

<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)">

Ezzel a megközelítéssel a modern böngészők előnyben részesítik a CSS betöltését az aktuális @media feltételekhez, így az oldal renderelése sokkal gyorsabban kezdődik el, mert a felhasználóknak nem kell megvárniuk a CSS fel nem használt részének betöltését.
Abban az esetben, ha az összes CSS egyetlen fájlba van csomagolva, és nem adsz meg feltételeket a link tag-ek media attribútumaiban, a böngésző megvárja a teljes CSS készlet betöltését az oldal renderelésének megkezdése előtt. Ami drasztikusan lelassítja az oldal renderelését.

Ebben a példában a töréspontok a Bootstrap 5-ön alapulnak. Ez a megközelítés hamarosan még fontosabbá válik a Bootstrap számára, tekintettel arra, hogy hozzáadják a világos/sötét/egyéb témák támogatását.

Ha jobbá és gyorsabbá szeretnéd tenni az internetet, kérlek:

  • oszd meg ezt a cikket,
  • küldd el ezt a cikket az általad használt keretrendszerek fejlesztőinek,
  • valósítsd meg ezt a CSS szétválasztást a weboldalaidon.

Megosztás közösségi médiában vagy mentés későbbre:

Ha többet szeretnél olvasni erről az optimalizálásról és a böngésző viselkedéséről, kérlek, tekintsd meg a következőket:

Hozzászólás

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük