Rule of least Power
Van de drie webtalen is JavaScript het meest gevoelig voor fouten, gevolgd door CSS,
terwijl HTML doorgaans het meest stabiel en betrouwbaar is. Dit past goed bij het
principe van progressive enhancement, waarbij een website in de basis functioneel
blijft, zelfs als geavanceerde functies uitvallen. Het idee is dat je vanaf een
solide fundament werkt en geleidelijk extra lagen toevoegt. Er bestaat een treffend
gezegde: “Wat je eenmaal geleerd hebt, hoef je niet opnieuw te leren.” In
webontwikkeling betekent dat vaak dat wat je vandaag bouwt, morgen nog steeds werkt.
Toch verandert de technologie voortdurend. Wat nu de standaard is, kan morgen
verouderd zijn. Daarom loont het om steeds op zoek te gaan naar slimmere,
efficiëntere manieren om hetzelfde doel te bereiken.
custom switches
Custom switches kun je heel goed maken met een standaard
<inputtype="checkbox">.
Door appearance: none toe te passen, haal je de standaard browserstijl
weg
en kun je de checkbox volledig zelf stijlen — bijvoorbeeld als een
aan/uit-schakelaar.
Het voordeel is dat de checkbox nog steeds werkt zoals bedoeld: hij is toegankelijk,
werkt in formulieren, en je kunt via :checked eenvoudig reageren met
CSS of JavaScript.
Zo combineer je flexibiliteit in design met goede gebruikerservaring en
functionaliteit.
overal:
Begin bij het maken van webinterfaces altijd met HTML – de minst krachtige maar meest
robuuste taal. Vanuit daar kun je uitbreiden met CSS en eventueel JavaScript. Er zijn
veel handige technieken om het meeste uit HTML en CSS te halen.
Zo kun je bijvoorbeeld een checkbox gebruiken als basis voor een custom switch. Door
appearance: none toe te passen, haal je de standaard stijl weg en kun je
het element volledig zelf vormgeven als een aan/uit-schakelaar met animaties en
kleurveranderingen.
Met de :checked-selector kun je reageren op de status van een input, wat
heel krachtig is in combinatie met visuele veranderingen. Daarnaast kun je met
accent-color de standaardkleur van formulierelementen zoals checkboxes,
sliders en radio-buttons aanpassen.
Als je werkt met ankers en vaste headers, dan is scroll-margin-top: 100px;
erg handig. Hiermee voorkom je dat een doel-element tegen de bovenrand van het scherm
geplakt zit wanneer je er naartoe scrolt.
Wil je visueel aangeven waar iemand naartoe is gesprongen op een pagina? Dan kun je
gebruikmaken van :target, gecombineerd met een outline en een
transition voor een vloeiende overgang. Zo wordt het gelinkte element
tijdelijk geaccentueerd.
Voor geanimeerde elementen zoals een <dialog> kun je met
@starting-style bepalen hoe het element er uitziet vóór de animatie begint.
Dit geeft meer controle over het startpunt van transities, zoals bijvoorbeeld een lagere
opacity of een kleinere schaal.
Met de nieuwe :has()-selector kun je CSS logica toevoegen die vergelijkbaar
is met een "if-statement". Bijvoorbeeld: form:has(input:checked) geeft je
de mogelijkheid om stijlen toe te passen op een element, afhankelijk van de inhoud. Dit
opent veel nieuwe ontwerpopties zonder JavaScript.
Tot slot kun je met ::picker en appearance: base-select; in
Chrome de dropdown van een <select> zelf stylen. Zo kun je afwijken
van de standaard verticale weergave en bijvoorbeeld een meer horizontale layout maken.