Gepubliceerd: 24 maart 2025
Vanaf Chrome 135 kunnen webontwikkelaars en ontwerpers zich eindelijk verenigen op een toegankelijk, gestandaardiseerd en CSS-stijlbaar <select>
-element op internet. Er is vele jaren aan gewerkt, er zijn vele uren technisch en gezamenlijk specificatiewerk aan besteed, en het resultaat is een ongelooflijk rijke en krachtige component die in oudere browsers niet kapot zal gaan.
Hier is een video van aangepaste selecties met behulp van deze nieuwe functies:
Als je het goed hebt gevolgd, zul je merken dat een aantal specificaties en functies zijn veranderd sinds Una 's verzoek om feedback van de community . Gelukkig kun je bij Una ook terecht als je vanuit die functie hebt gewerkt en geïnteresseerd bent in wat er is veranderd.
Er is ook gloednieuwe documentatie over MDN voor aanpasbare selectie , boordevol details.
Ontmoet appearance: base-select
Een nieuw appearance: base-select
dat het <select>
-element in een nieuwe, configureerbare en stijlbare staat plaatst, waarnaar gewoonlijk wordt verwezen als "base"-stijlen:
.custom-select {
&, &::picker(select) {
appearance: base-select;
}
}
Het gebruik van base-select
ontgrendelt een aantal nieuwe functies en gedragingen:
- Wijzigt de HTML-parser van de browser voor de inhoud binnen
<select>
. - Verandert de gerenderde internals van de
<select>
. - Toont nieuwe interne onderdelen en statussen voor de
<select>
. - Een nieuwe, minimalistische look, geoptimaliseerd voor maatwerk.
- Getoonde opties bevinden zich in de bovenste laag, zoals een popover.
- Getoonde opties gepositioneerd met
anchor()
.
Als u base-select
gebruikt, gaat een aantal functies en gedragingen verloren :
- De
<select>
wordt niet weergegeven buiten het browservenster. - Er worden geen ingebouwde componenten van het mobiele besturingssysteem geactiveerd.
- De
<select>
neemt niet langer de breedte van de langste<option>
over.
Een <select>
kan nu rijke HTML-inhoud bevatten
Voordat u een <select>
kon aanpassen, zou de browser deze negeren als u zaken als een afbeelding of SVG in het <option>
-element zou plaatsen.
Beschouw de volgende HTML, de browser zou deze lezen zoals u deze heeft geschreven:
<select class="custom-select">
<option>
<svg aria-hidden>…</svg>
<span>HTML</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>CSS</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>JavaScript</span>
</option>
<option>
<svg aria-hidden>…</svg>
<span>WASM</span>
</option>
</select>
De gebruikte DOM zou echter niet de <svg>
bevatten:
<select class="custom-select">
<option>
<span>HTML</span>
</option>
<option>
<span>CSS</span>
</option>
<option>
<span>JavaScript</span>
</option>
<option>
<span>WASM</span>
</option>
</select>
Hier ziet u (van links naar rechts) hoe Chrome, Safari en Firefox de voorgaande HTML weergeven. Als de browser appearance: base-select
ondersteunt, verschijnt de SVG in de optie, anders niet.

Er bestaat een risico bij het verbreken van bestaande websites met aanpasbare selectie, vanwege de wijzigingen in de parser. Chrome heeft de functies achter een Finch-experiment voor het geval er een noodgeval is om het uit te schakelen. Als alles goed gaat, eindigt het experiment en wordt de code permanent naar de bron verzonden.
Volledig aanpasbaar
Elk onderdeel van een base-select
kan worden verwisseld, aangepast en geanimeerd. Hier is een demo die elke nieuwe functie gebruikt om herkenbare en betekenisvolle geselecteerde ervaringen te creëren.

Vind nog veel meer voorbeelden in de bronnensectie aan het einde van dit bericht.
Ongewijzigde JavaScript-interfaces
Er zijn geen risico's voor uw bestaande JavaScript-interacties met een <select>
-element.
Als u echter rijke HTML aan uw <option>
-elementen begint toe te voegen, moet u de geselecteerde waarden testen, aangezien de browser nog steeds afbeeldingen en SVG parseert en negeert. De logica is echter veranderd: voor het bepalen van de geselecteerde inhoudsreeks, en afhankelijk van wat u in uw opties heeft, moet u mogelijk aanpassingen maken.
Als u het value
op een <option>
gebruikt, hoeft u zich nergens zorgen over te maken.
Bronnen
Chrome is de eerste die base-select
implementeert, maar elke browser heeft meegedaan aan de specificaties en er moeten nog meer 'basis'-elementen worden voltooid. Dit is nog maar een begin.
Houd ons in de gaten, want we zullen doorgaan met het toevoegen van richtlijnen, voorbeelden en bronnen voor het aanpassen van bepaalde elementen. Tot die tijd kunt u de volgende links raadplegen voor meer informatie.
- Webstandaarden
- Chroom
- Gemeenschap
Speciale dank aan iedereen die hieraan heeft meegewerkt!