Naar de inhoud
Gratis naslagwerk over HTML
HTML leren en naslaan
Naslag / Attribuut

sizes HTML attribuut

3 elementen kennen dit attribuut. Klik op een tag voor de volledige uitleg van dat element.

Wat doet het sizes attribuut?

Geeft in combinatie met srcset aan welke weergavebreedte een afbeelding op verschillende viewportbreedtes moet krijgen. De browser gebruikt deze informatie om, nog vóór CSS is toegepast, de meest geschikte bronafbeelding te kiezen.

HTML
<img src="foto-klein.jpg" srcset="foto-klein.jpg 480w, foto-groot.jpg 1080w" sizes="(min-width: 600px) 50vw, 100vw" alt="Landschap">

Welke HTML-elementen kennen sizes?

<img>

Het <img>-element van HTML bettet een afbeelding in het document in.

Een of meer waarden gescheiden door komma's, die bronformaten (source sizes) of het sleutelwoord auto kunnen zijn. De specificatie vereist dat het sizes-attribuut alleen aanwezig is wanneer srcset breedtedescriptoren gebruikt.
  • bronformaat (source size)

    • : Een bronformaat bestaat uit:

      1. Een media-conditie, weggelaten voor het laatste item in de lijst.
      2. Een bronformaatwaarde.

      Het volgende bronformaat stelt bijvoorbeeld voor een 1000px brede afbeeldingsbron te gebruiken als de breedte van de viewport 500px of minder is.

      CSS
      (width <= 500px) 1000px

      Media-condities beschrijven eigenschappen van de viewport, niet van de afbeelding. Omdat een bronformaatdescriptor de breedte specificeert die tijdens de layout voor de afbeelding gebruikt moet worden, is de media-conditie doorgaans (maar niet noodzakelijk) gebaseerd op @media/width.

      Bronformaatwaarden specificeren de beoogde weergavegrootte van de afbeelding. User agents gebruiken het huidige bronformaat om een van de bronnen te selecteren die door het srcset-attribuut worden opgegeven, wanneer die bronnen beschreven zijn met breedtedescriptoren (w). De w-waarde die in sizes is gedefinieerd, bepaalt de standaard layoutbreedte van de afbeelding. Bij afwezigheid van CSS rendert de browser de afbeelding op deze grootte, ongeacht de fysieke pixelafmetingen van het gedownloade bestand.

      Een bronformaatwaarde kan elke niet-negatieve lengte zijn. Er mogen geen CSS-functies gebruikt worden anders dan de wiskundige functies. Eenheden worden op dezelfde manier geïnterpreteerd als bij media queries, wat betekent dat alle relatieve lengte-eenheden relatief zijn aan de document-root en niet aan het <img>-element. Een em-waarde is bijvoorbeeld relatief aan de root-lettergrootte, niet aan de lettergrootte van de afbeelding. Percentage-waarden zijn niet toegestaan. Als het sizes-attribuut niet is opgegeven, heeft het een standaardwaarde van 100vw (de breedte van de viewport).

  • auto

    • : Het sleutelwoord auto geeft aan dat de browser de verwachte layoutbreedte van het element moet gebruiken om te bepalen welke afbeelding weergegeven wordt. Dat wil zeggen, hij moet de concrete grootte van de afbeelding gebruiken, berekend na toepassing van de layout op basis van HTML en CSS. Dit is alleen geldig in combinatie met loading="lazy", omdat verwacht wordt dat de pagina op het moment dat de afbeelding wordt geladen al beschikt over CSS en andere layoutinformatie.

      Door auto te gebruiken, hoef je je layout-media-condities niet twee keer op te geven: één keer voor de layout en één keer voor het selecteren van een geschikte afbeelding om op te halen en weer te geven.

      Als auto niet kan worden opgelost — hetzij omdat de browser het niet ondersteunt, hetzij omdat de afbeelding nog geen layoutgrootte heeft — valt de browser terug op de bronformaten in de lijst om de breedte te bepalen, vervolgens op de width/height-attributen die op het element zijn gedefinieerd, en ten slotte op de standaard intrinsieke grootte voor <img>-elementen die is gedefinieerd in het stylesheet van de user agent (300px bij 150px).

      Voor betere achterwaartse compatibiliteit met browsers die auto niet ondersteunen, kun je terugvalformaten na auto in het sizes-attribuut opnemen. Je zou ook de width- en height-attributen van het element moeten instellen op de intrinsieke afmetingen van de grootste afbeelding in je srcset, zodat de browser ruimte kan reserveren met de juiste beeldverhouding:

      HTML
      <img
        loading="lazy"
        width="200"
        height="200"
        sizes="auto, (max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)"
        srcset="
          swing-200.jpg   200w,
          swing-400.jpg   400w,
          swing-800.jpg   800w,
          swing-1600.jpg 1600w
        "
        src="swing-400.jpg"
        alt="Kettlebell Swing" />
Alles over <img> →

<source>

Het <source>-HTML-element specificeert een of meer mediabronnen voor de elementen <picture>, <audio> en <video>. Het is een void element, wa...

Specificeert een lijst met bronformaten die de uiteindelijk weergegeven breedte van de afbeelding beschrijven. Toegestaan als de ouder van <source> <picture> is. Niet toegestaan als de ouder <audio> of <video> is.

De lijst bestaat uit door komma's gescheiden bronformaten. Elk bronformaat is een paar bestaande uit een mediaconditie en een lengte. Voordat de pagina opgemaakt wordt, gebruikt de browser deze informatie om te bepalen welke afbeelding, gedefinieerd in srcset, weergegeven moet worden. Merk op dat sizes alleen effect heeft als er breedtedescriptoren zijn opgegeven bij srcset, en geen pixeldichtheidsdescriptoren (dat wil zeggen, 200w moet gebruikt worden in plaats van 2x).

Alles over <source> →

Andere attributen van deze elementen