Naadloze texturen zijn uitstekende CSS-achtergronden. Een enkele kleine afbeelding kan een geheel viewport bedekken via tegeling, waardoor een pagina visuele rijkdom krijgt zonder grote hero-afbeeldingen. Maar de implementatie correct uitvoeren is belangrijk: een slecht geoptimaliseerde achtergrondtextuur kan honderden kilobytes aan paginagewicht toevoegen en lay-outverschuivingen veroorzaken tijdens het laden. Deze gids behandelt de technische details van het gebruik van naadloze texturen in CSS.
CSS-Eigenschappen voor Tegelende Texturen
De kern-CSS voor een betegelde achtergrond is eenvoudig:
- background-image — Ingesteld op
url('/texture.webp')verwijzend naar je naadloze afbeelding. - background-repeat — Ingesteld op
repeat(de standaard). De browser belegelt de afbeelding in beide richtingen. Gebruikrepeat-xofrepeat-yvoor enkelas-tegeling. - background-size — Bepaalt de grootte van elke tegel. Een 512px-textuur op
background-size: 256px 256pxbelegelt op de helft van zijn oorspronkelijke grootte, waardoor een dichter patroon ontstaat. Laat deze eigenschap weg om te betegelen op oorspronkelijke resolutie. - background-attachment — Gebruik
scroll(standaard) voor normaal gedrag. Vermijdfixedop mobiel — het dwingt compositing op de main thread en veroorzaakt jank op iOS Safari.
Afbeeldingsformaatselectie
WebP
WebP moet je standaardformaat zijn voor CSS-achtergrondtexturen. Het ondersteunt zowel verlieslatende als verliesvrije compressie, is 25–35% kleiner dan gelijkwaardige PNG, en heeft universele browserondersteuning (97%+ wereldwijde dekking). Een 512px naadloze textuur comprimeert naar 15–40 KB in verlieslatende WebP bij kwaliteit 80, versus 60–150 KB als PNG.
PNG
Gebruik PNG alleen wanneer je verliesvrije getrouwheid of transparantie (alfakanaal) nodig hebt. PNG is aanzienlijk groter dan WebP voor fotografische of kleurverloop-zware texturen. Voor eenvoudige patronen met weinig kleuren (schaakbordpatronen, rasters), kan PNG concurreren met WebP vanwege zijn efficiënte verwerking van vlakke kleurregio’s.
JPEG
JPEG heeft geen transparantie en introduceert zichtbare compressie-artefacten rondom harde randen, waardoor het een slechte keuze is voor texturen met scherp detail. Voor zachte, organische texturen (wolken, ruis, kleurverlopen) kan JPEG bij kwaliteit 75–80 echter kleiner zijn dan WebP met aanvaardbare kwaliteit. Ondersteuning is universeel.
AVIF
AVIF biedt de beste compressieverhouding (40–50% kleiner dan WebP) maar heeft langzamere decoderingstijden en onvolledige browserondersteuning. Gebruik het als een progressieve verbetering via het <picture>-element als je texturen als <img>-tags serveert. Voor CSS-achtergronden is een WebP-fallbackketen eenvoudiger.
Bestandsgroottedoelen
Streef voor achtergrondtexturen naar deze bestandsgroottes:
- Onder 30 KB — Ideaal. Laadt in een enkele TCP-rondreis op de meeste verbindingen. Verwaarloosbare impact op totaal paginagewicht.
- 30–50 KB — Aanvaardbaar. Nog steeds snel op breedband; overweeg lazy loading op mobiel.
- 50–100 KB — Gebruik alleen als de textuur kritieke above-the-fold-inhoud is. Lazy load indien below the fold.
- Over 100 KB — Te groot voor een herhalende achtergrond. Verlaag resolutie, verhoog compressie of vereenvoudig het patroon.
CSS-Patronen vs. Afbeeldingstexturen
CSS-kleurverlopen kunnen eenvoudige patronen maken — strepen, stippen, schaakbordpatronen — zonder netwerkverzoeken. Een herhalend lineair kleurverloop met harde kleurstops produceert scherpe strepen. Radiale kleurverlopen creëren stippelpatronen. Deze zijn resolutie-onafhankelijk en uiterst lichtgewicht.
CSS-patronen kunnen echter organische texturen niet repliceren zoals ruis, marmer of papierkorrel. Voor alles buiten geometrische patronen is een kleine afbeeldingstextuur de betere aanpak. Het optimale punt is een 256–512px naadloze afbeelding onder 30 KB.
Donkere Modus Overwegingen
Achtergrondtexturen hebben vaak aanpassing nodig voor de donkere modus. Een lichte papiertextuur op een donkere achtergrond ziet er storend uit. Opties zijn:
- Aparte texturen — Serveer een donkere variant met
prefers-color-scheme: darkin een mediavraag of CSS-aangepaste eigenschappen. - CSS-filteroverlay — Pas
filter: invert(1)offilter: brightness(0.3)toe op een pseudo-element met de achtergrond, waarbij één afbeeldings-asset behouden blijft. - Opaciteitsvermindering — Gebruik een zeer subtiele textuur (
opacity: 0.05) die werkt op zowel lichte als donkere achtergronden als ruisoverlay.
Lazy Loading en Prestaties
CSS-achtergrondafbeeldingen kunnen het loading="lazy"-attribuut niet gebruiken (dat is alleen van toepassing op <img> en <iframe>). Om een achtergrondtextuur lazy te laden, gebruik je de Intersection Observer API om een CSS-klasse met de background-image-regel alleen toe te voegen wanneer het element het viewport betreedt. Voor above-the-fold-achtergronden, preload de afbeelding met <link rel="preload" as="image" href="/nl/texture.webp"> om het downloaden vroeg te starten.
Blader door de textuurbibliotheek of genereer een lichtgewicht patroon met de Geometrisch Patroon- of Raster-generator — beide produceren schone, kleine bestandsgroottes die ideaal zijn voor webachtergronden.