Webpagina's vormgeven met CSS: cascade en boxmodel

Leer webpagina's vormgeven met CSS. Schrijf regels en koppel een stijlblad, neem de standaardstijlen van de browser als uitgangspunt en selecteer precies de gewenste elementen. Voorspel met de cascade, specificiteit en overerving welke stijl voorrang krijgt als regels met elkaar conflicteren. Noteer kleuren en kies eenheden, bepaal de afmetingen en tussenruimte van elementen met het boxmodel en geef lettertypen, tekst, lijsten, links, achtergronden en randen vorm.

BeginnerLes 4 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen

Wat je leert

  1. Schrijf geldige CSS-regels, koppel een stijlblad aan een HTML-pagina en neem de stijlen die de browser al toepast als uitgangspunt. Gebruik ontwikkelaarstools om te zien wat er gebeurt.
    • Schrijf CSS-regels en koppel een stijlblad aan een pagina
      Lees en schrijf de onderdelen van een CSS-regel, kies tussen een extern stijlblad, een <style>-element en inline stijlen en weet wat de browser met fouten doet.
    • Neem de standaardstijlen van de browser als uitgangspunt en inspecteer die
      Herken de stijlen die elke browser vóór jouw stijlen toepast, bepaal wat je wilt terugzetten en gebruik ontwikkelaarstools om te achterhalen waarom een element er zo uitziet.
  2. Selecteer precies de bedoelde elementen met type-, klasse- en ID-selectors, attribuutselectors, pseudoklassen, pseudo-elementen en combinators.
    • Selecteer elementen op type, klasse en ID
      Selecteer elementen op naam, klasse of ID, combineer selectors die met hetzelfde element moeten overeenkomen en groepeer meerdere selectors in één regel.
    • Selecteer op attributen, toestanden en onderdelen van elementen
      Gebruik attribuutselectors, pseudoklassen voor toestanden en posities en pseudo-elementen die een deel van een element vormgeven of gegenereerde inhoud toevoegen.
    • Combineer selectors op basis van de plaats van elementen in de pagina
      Selecteer elementen op basis van hun relatie tot andere elementen in de HTML-boom: ergens binnen, direct binnen, direct na of ergens na een ander element.
  3. Bepaal welke declaratie van toepassing is als meerdere regels dezelfde eigenschap instellen, bereken specificiteit en leg uit hoe elementen waarden krijgen die geen regel er rechtstreeks aan heeft gegeven.
    • Volg de cascade om te bepalen welke declaratie voorrang krijgt
      Pas de stappen van de cascade toe (herkomst en belang, specificiteit en vervolgens volgorde van voorkomen) en gebruik inline stijlen, !important en cascadelagen zorgvuldig.
    • Bereken en vergelijk specificiteit
      Bepaal de score van elke selector in de notatie ID-CLASS-TYPE, vergelijk scores kolom voor kolom en houd de specificiteit laag zodat stijlen gemakkelijk te overschrijven blijven.
    • Gebruik overerving en de globale sleutelwoorden
      Weet welke eigenschappen van ouderelement op kindelement overgaan, gebruik overerving om minder CSS te schrijven en stuur die aan met inherit, initial, unset en revert.
  4. Noteer kleuren in de belangrijkste CSS-notaties, maak tekst leesbaar tegen de achtergrond en kies tussen absolute en relatieve eenheden voor tekst, tussenruimte en afmetingen.
    • Noteer kleuren met sleutelwoorden, hexadecimale notatie, rgb() en hsl()
      Gebruik kleursleutelwoorden, hexadecimale codes, rgb() en hsl(), voeg transparantie toe en controleer of tekst voldoende contrasteert met de achtergrond.
    • Kies lengtes en eenheden
      Gebruik pixels, em, rem, percentages en viewporteenheden correct, weet waartegen elke relatieve eenheid wordt afgemeten en combineer eenheden met calc().
  5. Leg uit hoe elk element wordt getekend als een box met inhoud, binnenruimte, rand en marge, bereken de afmetingen en regel de ruimte binnen en tussen boxen.
    • Bereken boxafmetingen op basis van inhoud, binnenruimte, rand en marge
      Benoem de vier onderdelen van een box, schrijf de verkorte eigenschappen voor tussenruimte en bereken de afmetingen van een element in het standaardboxmodel en het alternatieve boxmodel.
    • Regel de tussenruimte bij blokboxen en inlineboxen
      Voorspel hoe blokboxen, inlineboxen en inline-blockboxen ruimte innemen, centreer een blok met automatische marges en herken wanneer verticale marges samenvallen.
  6. Kies en laad lettertypen, maak tekst leesbaar, geef lijsten en links vorm en versier boxen met achtergronden, kleurverlopen, randen, afgeronde hoeken en schaduwen.
    • Kies lettertypen en laad weblettertypen
      Schrijf lettertypelijsten met terugvalopties, stel grootte, gewicht en stijl in, gebruik de verkorte eigenschap font en laad een aangepast lettertype met @font-face.
    • Geef tekst, lijsten en links een goed leesbare vormgeving
      Stel regelhoogte, uitlijning, tekstdecoratie, hoofdletters en kleine letters en tussenruimte in, verander lijstmarkeringen en inspringing en geef links duidelijke, toegankelijke toestanden.
    • Voeg achtergrondkleuren, achtergrondafbeeldingen en kleurverlopen toe
      Vul boxen met kleuren, afbeeldingen en kleurverlopen, bepaal hoe achtergrondafbeeldingen worden herhaald, geschaald en geplaatst en schrijf de verkorte eigenschap background.
    • Teken randen, afgeronde hoeken, omtreklijnen en schaduwen
      Schrijf verkorte randeigenschappen voor alle kanten of afzonderlijke kanten, rond hoeken af met border-radius en voeg omtreklijnen en schaduwen toe zonder de lay-out te veranderen.

Webpagina's vormgeven met CSS: uitleg

6 hoofdstukken

1

Koppel CSS en inspecteer het resultaat

CSS verandert een betekenisvolle HTML-pagina in een pagina met gekozen kleuren, lettertypen en tussenruimte. Een werkende regel heeft zowel een geldige syntaxis als een koppeling met het document nodig. De browser brengt ook eigen stijlen mee, dus je begint altijd met een bestaande vormgeving. Leer een extern stijlblad koppelen, een kleine wijziging maken en die wijziging volgen in de ontwikkelaarstools wanneer het resultaat afwijkt van wat je verwachtte.

1.1 Regels, declaraties en stijlbladen

HTML beschrijft inhoud en betekenis. CSS, een afkorting van Cascading Style Sheets, beschrijft de vormgeving: kleuren, lettertypen, tussenruimte, randen en achtergronden. Door een stijlblad te wijzigen kun je dezelfde HTML een ander uiterlijk geven zonder de koppen, alinea's of links te veranderen.

Lees een regel
p {
  color: navy;
  font-size: 18px;
}

De selector p komt overeen met alinea's. De accolades omsluiten het declaratieblok. Elke declaratie heeft een eigenschap, een dubbele punt, een waarde en een puntkomma. Hier zijn color en font-size eigenschappen; navy en 18px zijn waarden. Regeleinden en spaties tussen deze onderdelen maken de code gemakkelijker leesbaar zonder het effect te veranderen.

Een puntkomma scheidt een declaratie van de volgende. De laatste is optioneel, maar door die te laten staan voorkom je fouten wanneer je een regel toevoegt. In color: navy font-size: 18px; leest de browser één ongeldige kleurwaarde. De browser kan de twee bedoelde declaraties niet herstellen, dus geen van beide stijlen wordt door die tekst ingesteld.

Koppel de CSS

Een extern stijlblad is een afzonderlijk CSS-bestand waarnaar vanuit de HTML-head wordt gelinkt:

<link rel="stylesheet" href="css/styles.css">

Dit pad betekent dat een map met de naam css naast het HTML-bestand staat en styles.css bevat. Eén extern bestand kan meerdere pagina's vormgeven. Als je daarin een wijziging opslaat, worden de regels bijgewerkt die die pagina's laden.

Een style-element in de head bevat regels voor één pagina. Een inline style-attribuut bevat declaraties voor één element, zoals <p style="color: crimson;">Hello.</p>. Externe stijlbladen zijn meestal gemakkelijker te onderhouden. Normale inline declaraties krijgen ook voorrang op normale regels in stijlbladen van de auteur, wat latere wijzigingen lastig kan maken.

Zet voor een eerste resultaat body { font-family: Arial, sans-serif; } en h1 { color: darkslateblue; } in het gekoppelde bestand. Laad de pagina opnieuw. Lopende tekst krijgt Arial waar beschikbaar, met een schreefloos terugvallettertype; de kop verandert van kleur. Bedieningselementen zoals knoppen kunnen hun eigen browserlettertype behouden totdat je expliciet instelt dat ze het lettertype overerven.

Zoek syntaxis- en padfouten

Browsers slaan ongeldige declaraties over en gaan verder. color: 12px; is ongeldig omdat een lengte geen kleur is. font-size: 16 px; is ongeldig omdat het getal en de eenheid aan elkaar moeten staan. Ook een verkeerd gespelde eigenschap wordt genegeerd. Een geldige randdeclaratie in hetzelfde blok kan nog steeds werken, dus één zichtbare verandering bewijst niet dat elke declaratie geldig is.

CSS-commentaar gebruikt /* Header styles */ en kan over meerdere regels lopen. // begint geen CSS-commentaar; het kan ervoor zorgen dat daaropvolgende code wordt overgeslagen. Eigenschapsnamen en gewone sleutelwoordwaarden zijn niet hoofdlettergevoelig; schrijf ze volgens de conventie met kleine letters. Klassenamen en bestandspaden moeten overeenkomen met de werkelijke spelling en het gebruik van hoofdletters.

Als er geen stijlen verschijnen, controleer dan het verzoek in het netwerkpaneel. Een verkeerd pad zoals style.css kan een 404 opleveren, ook al opent de HTML-pagina zelf normaal.

Behandel verkorte eigenschappen als volledige instellingen

Een verkorte eigenschap stelt meerdere verwante eigenschappen tegelijk in. margin: 10px 20px; stelt alle vier de marges in. Weggelaten onderdelen keren terug naar hun beginwaarden: background-image: url("sky.jpg"); gevolgd door background: lightblue; verwijdert de afbeelding. Plaats eerst de verkorte eigenschap en daarna de afzonderlijke uitzonderingen die behouden moeten blijven.

Belangrijkste punten

  • Schrijf elke declaratie als property: value; binnen een regel.
  • Koppel een extern stijlblad vanuit de HTML-head; bepaal het pad vanaf het HTML-bestand.
  • Een browser slaat ongeldige CSS over en gaat verder met geldige declaraties.
  • Gebruik /* ... */ voor CSS-commentaar.
  • Een verkorte eigenschap zet verwante afzonderlijke eigenschappen die worden weggelaten terug op hun beginwaarden.

1.2 Standaardstijlen van de browser en ontwikkelaarstools

Een gewone HTML-pagina heeft toch grote koppen, ruimte tussen alinea's, lijstmarkeringen en onderstreepte links. Die komen uit het browserstijlblad, de ingebouwde CSS van de browser. Je stijlen beginnen met deze standaardinstellingen; een pagina zonder eigen vormgeving is geen pagina zonder CSS-regels.

Kies eerst de betekenis en dan het uiterlijk

Typische standaardinstellingen zijn een marge van 8px op de body, verticale alineamarges van 1em en een binnenruimte van 40px aan het begin van lijsten. Standaardinstellingen voor koppen zijn onder meer 2em voor h1 en 1.5em voor h2, met verticale marges van 0.67em voor h1. Belangrijke tekst is vet; tekst met nadruk is cursief. Niet-bezochte links zijn meestal blauw en bezochte links paars. Browserinstellingen en implementaties kunnen de standaardinstellingen beïnvloeden, dus inspecteer de daadwerkelijke pagina als nauwkeurigheid belangrijk is.

De standaardtekstgrootte is meestal 16px, met een lettertype dat in de browserinstellingen is gekozen. Lezers kunnen die grootte veranderen. Relatieve lettergroottes kunnen hun keuze volgen.

Kies een HTML-element om zijn betekenis en geef het daarna vorm. Als een h2 er te groot uitziet, gebruik dan h2 { font-size: 1.25rem; }. Als je alleen voor kleinere letters een h4 kiest, verandert de koppenstructuur. Door de CSS-grootte te wijzigen blijft de betekenis van de kop van het tweede niveau intact.

De standaardinstellingen bepalen ook hoe elementen ruimte innemen. Alinea's en secties vormen normaal gesproken blokboxen. Span-elementen en links lopen normaal gesproken binnen regels mee. Lijstitems hebben display: list-item, waardoor ze een box op blokniveau en een markering krijgen. Een wijziging van display in CSS verandert het gedrag van de box, terwijl de HTML-betekenis van het element behouden blijft.

Zet alleen terug wat je wilt

Een CSS-reset verwijdert geselecteerde standaardinstellingen. body { margin: 0; } verwijdert de ruimte aan de buitenkant. Een brede regel zoals * { margin: 0; padding: 0; } verwijdert ook de tussenruimte van alinea's en de inspringing van lijsten, die je dan opnieuw moet instellen. Een normalize-aanpak behoudt nuttige standaardinstellingen en past inconsistenties aan.

Formulieronderdelen hebben vaak rechtstreeks toegewezen browserlettertypen. Schrijf het volgende om ze hetzelfde lettertype als de pagina te geven:

button, input, select, textarea {
  font: inherit;
}

Begin het HTML-document met <!DOCTYPE html>. Dit selecteert de standaardmodus. Als je de doctype weglaat, kan de quirksmodus worden ingeschakeld, waarin ouder compatibiliteitsgedrag sommige afmetingen en andere CSS-resultaten verandert.

Inspecteer de eigenschap die je verrast

Klik met de rechtermuisknop op een element en kies Inspecteren. Het stijlenpaneel toont overeenkomende regels, waaronder browserregels met een label voor browserstijlen. Een doorgestreepte declaratie heeft van een andere declaratie verloren; een waarschuwing kan ongeldige CSS markeren. Per eigenschap wordt een winnaar gekozen, dus een regel kan zijn kleur verliezen maar nog wel zijn binnenruimte leveren.

Het paneel Computed toont de uiteindelijke eigenschapswaarden en de inhoud, binnenruimte, rand en marge van het boxmodel. Als een kop een onverwachte tussenruimte heeft, inspecteer dan de marge voordat je binnenruimte aan een ander element toevoegt. Test een wijziging direct in de ontwikkelaarstools en kopieer de werkende regel daarna naar je stijlblad: wijzigingen tijdens de inspectie verdwijnen als de pagina opnieuw wordt geladen.

Als een stijl niet werkt, volg dan een handige volgorde: controleer of het stijlblad is geladen, of de selector overeenkomt, of de declaratie geldig is, of die wint en of de eigenschap invloed heeft op dit soort box. Een geldige width: 200px bepaalt nog steeds niet de breedte van een gewone inline span.

Belangrijkste punten

  • Het browserstijlblad levert leesbare standaardstijlen voordat je CSS wordt toegepast.
  • Kies HTML-elementen op betekenis en verander hun uiterlijk met CSS.
  • Een CSS-reset verwijdert standaardinstellingen die je mogelijk opnieuw moet toevoegen.
  • Gebruik de standaardmodus met <!DOCTYPE html>.
  • Inspecteer overeenkomende regels, geldigheid en doorgestreepte declaraties voordat je code verandert.
  • Sla geslaagde experimenten uit de ontwikkelaarstools op in het stijlblad.
2

Selecteer precies de juiste elementen

Een selector beschrijft welke elementen een regel bereikt. Sommige selectors komen overeen met namen of attributen; andere met een toestand, een deel van een element of een relatie in de HTML-boom. Kleine verschillen in leestekens zijn belangrijk: een spatie, een komma en een punt vragen elk om iets anders. Werk vanaf het element dat je wilt vormgeven terug langs de voorwaarden die het identificeren, zodat een regel alle bedoelde elementen bereikt en de andere ongemoeid laat.

2.1 Type-, klasse-, ID- en samengestelde selectors

Een selector beantwoordt een praktische vraag: welke elementen moeten deze declaraties krijgen? Begin met de eenvoudigste selector die de gewenste rol uitdrukt. Een klasse kan op veel elementen worden hergebruikt zonder de stijl aan één plaats op de pagina te koppelen.

Selecteer op naam en attribuut
SelectorKomt overeen met
pElke alinea
.warningElk element met de klasse warning
#site-headerHet element met de ID site-header
*Elk element

Een typeselector is een elementnaam. Een klasseselector begint met een punt; een ID-selector begint met #. Het leesteken hoort bij de CSS-selector, niet bij de waarde van het HTML-attribuut. Schrijf <p class="warning">, niet <p class=".warning">.

Een element kan meerdere klassen hebben, gescheiden door spaties. Zowel <p class="warning"> als <div class="box warning"> komt overeen met .warning. Een ID moet uniek zijn binnen een pagina. Door de hoge specificiteit zijn stijlen op basis van ID's ook moeilijker te overschrijven. Daarom zijn klassen meestal het belangrijkste hulpmiddel voor herbruikbare stijlen.

Gebruik namen die een rol beschrijven, zoals .error-message of .product-card. Een naam als .red-text wordt misleidend als het ontwerp een andere kleur krijgt. Klassenamen zijn hoofdlettergevoelig: .Warning en .warning verschillen. Een naam die met een cijfer begint, moet in een CSS-selector worden geëscapet; met .three-columns vermijd je de ongeldige, niet-geëscapete vorm .3-columns.

Stel meerdere voorwaarden aan één element

Door selectors tegen elkaar aan te schrijven maak je een samengestelde selector. Hetzelfde element moet aan elk onderdeel voldoen. p.intro komt overeen met alinea's die de klasse intro hebben. .card.featured komt overeen met een element met beide klassen.

<p class="note important">Doors open at 19:00.</p>
<p class="note">Bring your ticket.</p>
.note { color: #333333; }
.important { font-weight: bold; }
p.note.important { border-left: 4px solid crimson; }

Zoek eerst de overeenkomende elementen. Beide alinea's hebben note, dus beide krijgen donkergrijze tekst. Alleen de eerste heeft important, dus alleen die wordt vet. De samengestelde selector voegt de linkerrand toe aan diezelfde eerste alinea, omdat die een p met beide klassen is. Er is geen extra omhullend element nodig.

Een spatie verandert de opdracht: p .intro selecteert een element met de klasse intro binnen een alinea. De selector selecteert niet de alinea zelf. Houd de onderdelen bij elkaar als ze hetzelfde element beschrijven.

Deel een declaratieblok

Een komma maakt een selectorlijst:

h1, h2, h3 { font-family: Georgia, serif; }

Elke selector komt onafhankelijk overeen met zijn kopniveau. Zonder de komma's zou h1 h2 h3 vragen om een h3 binnen een h2 binnen een h1.

Een ongeldige selector in een gewone selectorlijst kan de hele regel ongeldig maken. h1, h2..title, h3 geeft geen van die koppen vorm, omdat de twee opeenvolgende punten ongeldig zijn. Als een gedeelde regel lijkt te ontbreken, controleer dan elke selector in de lijst, niet alleen die voor het element dat je hebt geïnspecteerd.

Belangrijkste punten

  • Een klasse kan op veel elementen voorkomen en één element kan meerdere klassen hebben.
  • Een ID moet uniek zijn op de pagina en heeft een hoge selectorspecificiteit.
  • p.intro vereist beide voorwaarden op één element; p .intro beschrijft een afstammeling.
  • Komma's maken onafhankelijke selectors die declaraties delen.

2.2 Attributen, toestanden en onderdelen

Sommige voorwaarden voor vormgeving staan al in HTML-attributen. Andere hangen af van wat de lezer doet of waar een element tussen zijn zusterelementen staat. CSS kan elementen op deze voorwaarden selecteren zonder voor elke voorwaarde een klasse toe te voegen.

Selecteer een attribuut of de waarde ervan

Attribuutselectors gebruiken vierkante haken. [alt] komt overeen met een aanwezig attribuut, ook als de waarde leeg is. input[type="email"] vereist de exacte attribuutwaarde.

PatroonBetekenis
[href^="https"]Waarde begint met https
[href$=".pdf"]Waarde eindigt op .pdf
[href*="example"]Waarde bevat example
[class~="note"]Een lijst met spaties als scheiding bevat het woord note
`[lang="en"]`

Voeg i toe vóór de sluitende haak om geen onderscheid te maken tussen hoofdletters en kleine letters, zoals in a[href$=".pdf" i]. Deze selector bereikt ook een link die eindigt op .PDF. Door op een heel woord te selecteren voorkom je dat note per ongeluk overeenkomt met een langer klassewoord zoals notebook.

Selecteer een toestand of positie

Een pseudoklasse gebruikt één dubbele punt: :hover, :focus, :checked of :disabled. :focus-visible selecteert een element met focus wanneer de browser bepaalt dat een zichtbare indicator nodig is, meestal tijdens navigatie met het toetsenbord.

Een link kan tegelijk bezocht zijn en aangewezen worden. Schrijf linktoestanden bij concurrerende regels met dezelfde specificiteit in deze volgorde: :link, :visited, :focus, :hover, :active. Anders zou een latere regel voor de bezoekkleur bij een bezochte link winnen van een eerdere regel voor de kleur bij aanwijzen. Browsers beperken :visited om privacyredenen tot bepaalde kleurwijzigingen; het lettergewicht instellen werkt niet en transparantie kan de bezoekgeschiedenis niet onthullen.

Structurele pseudoklassen tellen zusterelementen. :first-child betekent het eerste kindelement van zijn ouderelement. In <article><h2>News</h2><p>Update</p></article> komt p:first-child met niets overeen. p:first-of-type komt wel overeen met die alinea.

:nth-child(3) selecteert het derde kindelement. odd selecteert posities 1, 3, 5; even selecteert 2, 4, 6. Begin in :nth-child(3n+1) met n = 0, daarna 1, 2 en 3: de geselecteerde posities zijn 1, 4, 7 en 10. li:not(:last-child) sluit het laatste item uit en is daarom handig voor scheidingen die alleen tussen items staan.

Geef een onderdeel vorm of voeg een aanwijzing toe

Een pseudo-element gebruikt twee dubbele punten. ::first-line en ::first-letter geven delen van tekst vorm; ::marker geeft lijstmarkeringen vorm, ::placeholder de hint van een veld en ::selection geselecteerde tekst. De oudere vormen met één dubbele punt voor before, after, first-line en first-letter werken nog steeds.

.required::after {
  content: " *";
  color: crimson;
}

::after maakt inhoud binnen het geselecteerde element, na de bestaande inhoud. ::before maakt die ervoor. Beide hebben een content-waarde nodig; zelfs content: "" maakt een decoratieve box. Essentiële tekst hoort in de HTML, waar die werkelijke documentinhoud blijft. Gebruik deze pseudo-elementen voor decoratie of kleine aanwijzingen, omdat gegenereerde tekst niet zo betrouwbaar als HTML-tekst kan worden geselecteerd of gekopieerd.

Belangrijkste punten

  • Attribuutoperatoren maken onderscheid tussen aanwezigheid, exacte waarden, tekstfragmenten en hele woorden.
  • Een pseudoklasse selecteert een toestand of positie; een pseudo-element geeft een onderdeel of gegenereerde inhoud vorm.
  • :first-child telt alle zusterelementen, terwijl :first-of-type hetzelfde elementtype telt.
  • Linktoestanden kunnen overlappen, dus concurrerende toestandregels hebben een bewuste volgorde nodig.
  • ::before en ::after hebben content nodig; essentiële informatie hoort in HTML.

2.3 Relaties in de HTML-boom

HTML-elementen vormen een boom. Een element dat direct binnen een ander element staat, is een kindelement daarvan; alles wat daarin is genest, is een afstammeling. Elementen met hetzelfde ouderelement zijn zusterelementen. Een combinator verbindt selectors op basis van een van deze relaties.

Volg de relatie naar het doelelement
CombinatorVoorbeeldDoelelement
Spatienav aElke link ergens binnen een nav
>.menu > liEen li direct binnen .menu
+h2 + pEen alinea direct na een h2, met hetzelfde ouderelement
~h2 ~ pElke latere alinea die een zusterelement van een h2 is

Het meest rechtse deel benoemt het element dat de declaraties krijgt. h2 + p geeft de alinea vorm, niet de kop. Beide zusterelementcombinators kijken vooruit langs zusterelementen; geen van beide selecteert een ouderelement of een eerder zusterelement.

Volg een geneste lijst
<ul class="menu">
  <li>Guides</li>
  <li>Topics
    <ul>
      <li>Typography</li>
    </ul>
  </li>
</ul>

.menu li komt overeen met alle drie de lijstitems, omdat ze alle drie afstammelingen van de buitenste lijst zijn. .menu > li komt alleen overeen met “Guides” en “Topics”: hun ouderelement is de lijst met de klasse menu. Het ouderelement van het item “Typography” is de binnenste ul, die die klasse niet heeft.

Dit onderscheid is belangrijk wanneer items op het hoogste niveau veel binnenruimte nodig hebben, maar geneste items een compacte tussenruimte. Een afstammelingsselector bereikt elke diepte, tenzij een andere voorwaarde de selectie beperkt.

Volg volgende zusterelementen
<article>
  <h2>Opening hours</h2>
  <p>Visit in the morning.</p>
  <aside>Closed on holidays.</aside>
  <p>Booking is optional.</p>
</article>

h2 + p komt overeen met de eerste alinea. De selector slaat de aside niet over om een andere alinea te vinden. h2 ~ p komt overeen met beide alinea's, omdat beide na de kop komen en hetzelfde ouderelement hebben. Als een alinea binnen de aside zou staan, zou die geen zusterelement van de kop zijn en daarom met geen van beide selectors overeenkomen.

Combineer relaties zonder te veel te selecteren

.sidebar > ul a:hover komt overeen met aangewezen links ergens binnen een ul waarvan het directe ouderelement de klasse sidebar heeft. Lees van rechts naar links: een aangewezen link; binnen een lijst; die lijst direct binnen de zijbalk. De spatie staat tussengelegen elementen tussen de lijst en de link toe.

Combinators voegen geen specificiteit toe. De elementen, klassen, ID's en andere selecterende onderdelen van de selector doen dat nog wel. Lange ketens kunnen regels daardoor moeilijker te onderhouden maken, ook al voegen de relatietekens geen punten toe: als de nesting van de HTML verandert, kan de selector niet meer overeenkomen. Een beschrijvende klasse op het doelelement, zoals .menu-link, drukt een herbruikbare rol vaak duidelijker uit.

Als een regel niet overeenkomt, inspecteer dan de werkelijke boom in plaats van visuele tussenruimtes te tellen. Twee elementen kunnen op het scherm naast elkaar staan terwijl ze in de HTML verschillende ouderelementen hebben. Commentaar en witruimte tellen bij deze combinators niet als zusterelementen.

Belangrijkste punten

  • Een spatie bereikt afstammelingen op elke diepte; > bereikt directe kindelementen.
  • + bereikt het direct volgende zusterelement; ~ bereikt latere overeenkomende zusterelementen.
  • De meest rechtse selector benoemt het element dat wordt vormgegeven.
  • Combinators voegen geen specificiteit toe, maar lange selectorketens zijn sterk afhankelijk van de HTML-structuur.
3

Bepaal welke declaratie wint

Meerdere regels kunnen overeenkomen met één element en elk kan een ander deel van het uiterlijk bepalen. De cascade kiest voor elke eigenschap een waarde via een reeks vergelijkingen. Specificiteit telt pas mee als vergelijkingen met hogere voorrang gelijk eindigen. Overerving helpt vervolgens tekststijlen door de pagina te laten doorwerken zonder een regel op elk element. Door deze taken gescheiden te houden kun je een doorgestreepte declaratie veel gemakkelijker verklaren en corrigeren.

3.1 De cascade, inline stijlen en lagen

De cascade kiest voor elke eigenschap op elk element een winnende declaratie. De cascade kiest niet één volledige regel om alle andere weg te laten. Met p { color: gray; font-size: 18px; } en .lead { color: black; } kan een alinea met de klasse lead haar kleur van de klasseregel en haar grootte van de typeregel krijgen.

Vergelijk in de juiste volgorde

Verwijder eerst declaraties die niet van toepassing zijn: hun selectors moeten overeenkomen en eventuele voorwaarden moeten waar zijn. Vergelijk daarna herkomst en belang, inclusief de voorrang van cascadelagen. Normale inline auteursstijlen krijgen voorrang op normale regels in stijlbladen van de auteur. Als declaraties na deze eerdere stappen gelijk blijven, vergelijk je de specificiteit; gebruik bij een resterende gelijke stand de volgorde van voorkomen.

Herkomst van normale declaratiesVoorrang
Auteur: de CSS van de websiteHoogste van deze drie
Gebruiker: aangepaste stijlen van een lezerTussen auteur en browser
Browser: standaardstijlen van de browserLaagste

Bij twee .button-regels met gelijke voorrang die verschillende achtergrondkleuren instellen, beslist de volgorde: de latere wint. Stijlbladen die later in de HTML zijn gekoppeld, komen bij zulke gelijke standen ook later. Een bestand dat sneller via het netwerk binnenkomt, komt daardoor niet later in de cascade.

Begrijp belang voordat je het toevoegt

Een inline declaratie zoals style="color: purple;" wint van normale selectors in stijlbladen van de auteur, zelfs van selectors met ID's. Een declaratie met !important in een stijlblad van de auteur kan van die normale inline declaratie winnen.

<p class="note" style="color: purple;">Check the time.</p>
p { color: gray !important; }
.note { color: blue; }

De alinea is grijs. Belang wordt vóór selectorspecificiteit of het voordeel van normale inline stijlen vergeleken. Als de inline kleur ook !important heeft, wint die belangrijke inline declaratie van de belangrijke regel in het stijlblad van de auteur.

Bij belangrijke declaraties is de voorrang van herkomst omgekeerd: belangrijke browserdeclaraties gaan boven belangrijke gebruikersdeclaraties, die weer boven belangrijke auteursdeclaraties gaan. Dit beschermt regels die lezers of browsers moeten afdwingen. Binnen één herkomst komen de voorrang van inline stijlen en lagen nog steeds vóór specificiteit en bronvolgorde.

Als je voor elk conflict !important gebruikt, wordt overschrijven steeds moeilijker. Kies liever een eenvoudigere selector of een bewuste volgorde. Het overschrijven van regels van derden die je niet kunt bewerken, kan een belangrijke declaratie rechtvaardigen; het moet een weloverwogen uitzondering zijn.

Groepeer regels in cascadelagen
@layer reset, base, components;
@layer base {
  p { margin: 0 0 1rem; }
}

Dit declareert de volgorde van de lagen vóór hun regels. Voor normale declaraties winnen latere lagen van eerdere lagen, ongeacht de specificiteit van de selectors. Normale regels buiten een laag winnen van normale regels in lagen. Een componentregel met lage specificiteit kan daardoor een basisregel met hoge specificiteit overschrijven zonder ID's toe te voegen.

Bij belangrijke declaraties is die laagvolgorde omgekeerd: eerdere lagen winnen van latere en belangrijke declaraties in lagen winnen van belangrijke declaraties buiten lagen. Deze omkering behoudt belangrijke beschermingen in fundamentele lagen. Stel bij het onderzoeken van een conflict eerst de winnende herkomst, het belang en de laaggroep vast voordat je tijd besteedt aan het tellen van selectoronderdelen.

Belangrijkste punten

  • De cascade selecteert declaraties afzonderlijk voor elke eigenschap.
  • Herkomst, belang, voorrang van inline stijlen en voorrang van lagen komen vóór specificiteit.
  • Normale inline auteursstijlen winnen van normale regels in stijlbladen van de auteur.
  • !important verandert de voorrang; het voegt geen specificiteit toe.
  • Bij normale declaraties krijgen latere lagen en regels buiten lagen voorrang; bij belangrijke declaraties is de volgorde omgekeerd.
  • De volgorde van voorkomen beslist pas tussen declaraties als eerdere vergelijkingen gelijk eindigen.

3.2 Specificiteit zonder giswerk

Specificiteit meet het selectiegewicht van een selector. Vergelijk specificiteit alleen tussen declaraties die in de eerdere cascadestappen nog gelijk staan, waaronder herkomst, belang, laag en voorrang van inline stijlen.

Tel drie kolommen

Schrijf specificiteit als ID-CLASS-TYPE, zoals 0-1-1.

KolomTel elk van deze onderdelen
IDID-selectors zoals #menu
CLASSKlassen, attribuutselectors en gewone pseudoklassen
TYPETypeselectors en pseudo-elementen

De universele selector * en combinators voegen niets toe. Voor a[href^="https"]:focus tel je geen ID's, twee CLASS-onderdelen (het attribuut en :focus) en één TYPE-onderdeel (a). Het resultaat is 0-2-1.

Meer voorbeelden: .nav a is 0-1-1; ul li a:hover is 0-1-3; #main .card > h2 is 1-1-1; article p::first-line is 0-0-3. Een pseudo-element telt mee bij de typen, ook al begint de naam met dubbele punten.

Vergelijk vanaf links

Vergelijk eerst de ID's. Als die gelijk zijn, vergelijk je CLASS; als ook die gelijk zijn, vergelijk je TYPE. Alleen bij gelijke drietallen ga je verder naar de bronvolgorde. Dit zijn afzonderlijke aantallen, geen cijfers in een decimaal getal: 0-11-0 verliest nog steeds van 1-0-0. Extra klassen kunnen niet worden doorgeschoven naar een ID.

<nav id="site-nav">
  <a class="active" href="/">Home</a>
</nav>
#site-nav a { color: white; }
nav a.active { color: orange; }
.active { color: yellow; }

Stel dat dit normale declaraties in dezelfde auteurslaag zijn. Hun scores zijn 1-0-1, 0-1-2 en 0-1-0. De eerste wint, dus de link is wit. De ID-kolom beslist de vergelijking voordat de aantallen klassen of typen meetellen.

#site-nav .active zou winnen met 1-1-0, maar een ontwerp op basis van klassen is gemakkelijker uit te breiden: .site-nav a kan de basisstijl leveren en .site-nav .active kan de actieve link veranderen. Zo blijft de specificiteit laag en redelijk gelijkmatig.

Ken de uitzonderingen bij functies

:is(), :not() en :has() voegen voor de functie zelf geen gewicht toe. Hun specifiekste argument levert het gewicht. Zo is li:not(.done) gelijk aan 0-1-1 en :is(#intro, p) a aan 1-0-1. Tel de specifiekste selector in de argumentenlijst, niet de selector die je visueel het dichtst bij het element vindt.

:where() en alles wat daarin staat, dragen altijd nul bij. :where(#main) p scoort daarom 0-0-1. Dit is handig voor standaardstijlen die gemakkelijk te overschrijven moeten zijn.

De afstand tot een voorouder telt niet mee. body h1 en html h1 scoren beide 0-0-2, dus een latere declaratie beslist bij die gelijke stand. Inline stijlen worden vóór selectorspecificiteit behandeld en !important hoort bij belang. Geen van beide is een extra gewoon selectoronderdeel dat je aan het drietal toevoegt.

Belangrijkste punten

  • Tel eerst ID's, dan klassen, attributen en pseudoklassen en daarna typen en pseudo-elementen.
  • Vergelijk drietallen kolom voor kolom; een lagere kolom kan niet zwaarder wegen dan een hogere.
  • Combinators en * voegen nul toe.
  • :is(), :not() en :has() nemen hun specifiekste argument; :where() draagt nul bij.
  • De afstand tot een voorouder heeft geen invloed op specificiteit.

3.3 Overgeërfde waarden en bewust terugzetten

Overerving laat een kindelement een waarde van zijn ouderelement ontvangen wanneer die eigenschap normaal overerft en geen declaratie een andere waarde op het kindelement instelt. Daardoor kan één bodyregel de tekstkleur en het lettertype voor een groot deel van een pagina bepalen.

Maak onderscheid tussen overgeërfde tekst- en boxinstellingen

De meeste teksteigenschappen erven over: color, lettertype-eigenschappen, line-height, letter-spacing, text-align en text-transform. Lijststijlen en visibility erven ook over. Boxeigenschappen zoals marge, binnenruimte, rand, breedte, hoogte, achtergronden, display en de berekening van boxafmetingen doen dat niet.

body { color: #222222; font-family: Georgia, serif; }
h1, h2 { font-family: Arial, sans-serif; }
footer { color: #666666; }

Gewone lopende tekst gebruikt donkergrijs Georgia. Koppen krijgen hun rechtstreeks toegewezen lettertypefamilie en behouden de overgeërfde kleur. Tekst in de voettekst erft Georgia, terwijl de kleur plaatselijk verandert.

Door de transparante achtergrond van een kindelement is de achtergrond van het ouderelement zichtbaar; dat betekent niet dat het kindelement de achtergrondkleur heeft overgeërfd. Ook krijgen kindelementen van een box met een rand niet automatisch een eigen rand.

Rechtstreekse toewijzingen winnen van waarden die kunnen worden overgeërfd

Met #content { color: red; } en p { color: blue; } is een alinea binnen het inhoudsgebied blauw. De specificiteit van de ID concurreert niet met de alinearegel, omdat de declaraties op verschillende elementen zijn gericht. De alinea heeft al een rechtstreeks toegewezen kleur en heeft het overgeërfde rood dus niet nodig.

Kindelementen erven doorgaans berekende waarden. Als een sectie font-size: 20px heeft en haar kindelement font-size: 0.8em, wordt voor dat kindelement 16px berekend. Een alinea daarbinnen erft 16px; die vermenigvuldigt niet opnieuw met 0.8. Een regelhoogte zonder eenheid is nuttig omdat de overgeërfde waarde een vermenigvuldigingsfactor blijft voor de eigen lettergrootte van elk kindelement.

Kies wat terugzetten betekent
SleutelwoordEffect
inheritNeem de berekende waarde van het ouderelement over
initialGebruik de beginwaarde van de CSS-eigenschap
unsetErf een overgeërfde eigenschap; gebruik de beginwaarde voor een niet-overgeërfde eigenschap
revertDraai de stijlen van de huidige herkomst terug
revert-layerDraai de stijlen van de huidige cascadelaag terug

Voor CSS van de auteur maakt revert stijlen van de gebruiker of browser zichtbaar. Het verschil is belangrijk op een div: display: initial geeft de beginwaarde inline van de eigenschap, terwijl display: revert de gebruikelijke browserweergave block herstelt. Een beginwaarde hoort bij de CSS-eigenschap; een browserstandaard kan afhangen van het HTML-element.

inherit werkt ook op een eigenschap die normaal niet overerft, zoals border: inherit. button, input { font: inherit; } vervangt de rechtstreeks toegewezen lettertypen van de bedieningselementen door het lettertype van hun ouderelement. all: unset zet bijna elke eigenschap tegelijk terug, waardoor ook nuttige ingebouwde vormgeving verdwijnt.

Een schijnbare uitzondering is een onderstreping. text-decoration wordt niet overgeërfd, maar een onderstreping van een ouderelement wordt doorgetrokken onder de inline-afstammelingen. Met text-decoration: none op een geneste span kun je de lijn van het ouderelement niet verwijderen. Verwijder die van het ouderelement en pas die alleen toe op de tekst die onderstreept moet zijn.

Belangrijkste punten

  • De meeste teksteigenschappen erven over; boxeigenschappen doorgaans niet.
  • Een rechtstreeks toegewezen waarde op een kindelement krijgt voorrang op een overgeërfde waarde van het ouderelement.
  • initial betekent de CSS-beginwaarde; revert kan standaardwaarden van de browser voor elementen herstellen.
  • unset kiest afhankelijk van de eigenschap voor overerving of de beginwaarde.
  • revert-layer verwijdert de huidige laag uit de beslissing over die eigenschap.
  • Een onderstreping van een ouderelement wordt doorgetrokken onder inline-afstammelingen zonder te worden overgeërfd.
4

Noteer kleuren en kies bruikbare eenheden

CSS-waarden hebben naast een geldige spelling ook een duidelijke betekenis nodig. Een kleur kun je met een naam, kanaalwaarden of kleurtoon noteren en transparantie verandert wat de lezer uiteindelijk ziet. Een lengte kan tekst, een container of het browservenster volgen. Leer welke referentie elke eenheid gebruikt en werk de waarde uit voordat je die in de browser controleert. Deze keuzes helpen stijlen leesbaar te houden wanneer de inhoud en instellingen van de lezer veranderen.

4.1 Kleurwaarden, alfawaarde en contrast

color stelt de tekstkleur in. Ook achtergronden, randen, omtreklijnen, tekstdecoraties en schaduwen accepteren kleurwaarden. Je kunt dezelfde kleur op verschillende manieren noteren; kies een notatie die de bedoelde verandering gemakkelijk te begrijpen maakt.

Lees namen en hexadecimale kanalen

CSS heeft ongeveer 150 benoemde kleuren, waaronder navy, tomato en rebeccapurple. Namen zijn handig voor snelle experimenten, maar hun dagelijkse betekenis kan je verrassen: green is #008000, terwijl helder zuiver groen lime, of #00ff00, is. Exacte waarden nemen die onzekerheid weg.

Een hexadecimale kleur met zes cijfers heeft drie kanaalparen: rood, groen en blauw. Elk paar loopt van 00 tot ff, wat overeenkomt met 0 tot en met 255. Allemaal nul geeft zwart; allemaal maximaal geeft wit. Gelijke paren leveren een grijstint op, zoals in #808080.

Hexadecimale notatie met drie cijfers verdubbelt elk cijfer: #f0a wordt #ff00aa. Er worden geen nullen toegevoegd. Een kleur zoals #1e90ff kan niet worden verkort omdat niet elk paar uit twee gelijke cijfers bestaat. Hoofdletters en kleine letters in hexadecimale notatie betekenen dezelfde waarden.

Om een paar om te rekenen, vermenigvuldig je het eerste cijfer met 16 en tel je het tweede erbij op. De letters a tot en met f betekenen 10 tot en met 15. Voor #1e90ff geeft 1e 30, 90 144 en ff 255. De bijbehorende RGB-notatie is rgb(30 144 255). Oudere code kan komma's of rgba() gebruiken; die vormen werken nog steeds.

Beschrijf kleurtoon of transparantie

hsl() benoemt kleurtoon, verzadiging en lichtheid. De kleurtoon is een hoek: 0 of 360 is rood, 120 groen en 240 blauw. De verzadiging loopt van grijs bij 0% tot volledig verzadigd bij 100%. De lichtheid loopt van zwart bij 0% tot wit bij 100%. Een zuivere kleurtoon heeft 100% verzadiging en 50% lichtheid, zoals in hsl(0 100% 50%). Door alleen de lichtheid te veranderen maak je verwante donkere en bleke versies.

Een alfawaarde volgt na een schuine streep: rgb(0 0 0 / 0.6) is zwart met 60% ondoorzichtigheid. Nul is volledig transparant en één volledig ondoorzichtig. Hexadecimale notatie met acht cijfers voegt een alfapaar toe: #00000080 heeft 128 van de 255, ongeveer 50% alfa. transparent is volledig transparant.

.notice {
  color: white;
  background-color: rgb(0 0 0 / 0.6);
}

Hier is alleen de achtergrond gedeeltelijk transparant. opacity: 0.6 zou daarentegen het hele element vervagen, inclusief tekst en kindelementen. Dat verschil is belangrijk als je ondoorzichtige, leesbare tekst op een gekleurd oppervlak wilt.

Hergebruik kleur en controleer het resultaat

currentColor betekent de eigen tekstkleur van het element. Met color: #0055aa; border: 2px solid currentColor; volgt de rand de tekst. Als je de tekstkleur verandert, verandert die rand ook zonder dat je een kleurwaarde hoeft te herhalen.

WCAG 2.2 niveau AA vereist een contrast van ten minste 4,5:1 voor normale tekst en 3:1 voor grote tekst, ongeveer 24px of ongeveer 18,5px als die vet is. #767676 op wit is ongeveer 4,54:1; #999999 op wit is ongeveer 2,85:1 en voldoet aan geen van beide drempels. Gebruik een contrastcontroleprogramma of de kleurhulpmiddelen van de browser op de daadwerkelijke combinatie van voorgrond en achtergrond, inclusief het effect van transparantie.

Belangrijkste punten

  • Hexadecimale kleuren coderen rood, groen en blauw; de vorm met drie cijfers herhaalt elk cijfer.
  • rgb() geeft kanalen, terwijl hsl() kleurtoon, verzadiging en lichtheid geeft.
  • De alfawaarde in een achtergrondkleur beïnvloedt die kleur; opacity vervaagt het hele element.
  • currentColor volgt de tekstkleur van het element.
  • Normale tekst heeft volgens WCAG AA minstens 4,5:1 contrast nodig; grote tekst 3:1.

4.2 Pixels en relatieve lengtes

Een lengte combineert een getal met een eenheid, zoals 16px of 1.5rem. Daartussen staat geen spatie. Een breedte die niet nul is, heeft een eenheid nodig: width: 300; is ongeldig. Bij nul mag de eenheid worden weggelaten. Sommige eigenschappen nemen bewust gewone getallen, waaronder line-height: 1.5, opacity: 0.8 en font-weight: 700.

Koppel de eenheid aan haar referentie
EenheidReferentie
pxEen CSS-referentiepixel
em in font-sizeDe lettergrootte van het ouderelement
em in tussenruimte en andere lengtesDe eigen lettergrootte van het element
remDe lettergrootte van het hoofdelement
%Een referentie die door de eigenschap wordt bepaald
vw, vhBreedte of hoogte van de viewport
chDe breedte van het nulteken van het lettertype

Een CSS-pixel is niet noodzakelijk één fysiek schermpunt. Schermen met een hoge pixeldichtheid kunnen meerdere apparaatpixels gebruiken voor één CSS-pixel. Vaste relaties tussen eenheden zijn onder meer 1 in = 96 px = 2,54 cm en 1 pt = 1/72 in. Dus 12 pt is gelijk aan 16 px en 1 cm is ongeveer 37,8 px. Die omrekeningen garanderen niet op elk scherm een fysieke maat.

Werk waarden ten opzichte van de lettergrootte uit

Stel dat een ouderelement een lettergrootte van 16px heeft en zijn kindelement font-size: 1.25em; padding: 2em;. Bereken eerst de lettergrootte: 1,25 keer 16px geeft 20px. De binnenruimte gebruikt vervolgens de eigen grootte van het kindelement, dus 2 keer 20px geeft 40px aan elke kant.

Geneste lettergroottes in em kunnen op elkaar worden toegepast. Met li { font-size: 1.25em; } worden drie geneste niveaus vanaf 16px achtereenvolgens 20px, 25px en 31,25px. 1.25rem geeft daarentegen op elk niveau 20px als het hoofdelement 16px is.

Als je de grootte van het hoofdelement op de browserstandaard laat staan of als percentage instelt, kan relatieve tekst meeveranderen wanneer een lezer die standaard wijzigt. Een vaste html { font-size: 16px; } overschrijft die instelling. Een praktisch patroon is rem voor de lettergrootte en em voor de binnenruimte van een knop, zodat de tussenruimte meegroeit met de eigen tekst.

Controleer percentages en de viewport

De eigenschap bepaalt de referentie voor een percentage. Een omsluitend blok levert een referentie voor de boxafmetingen; in deze voorbeelden in de normale documentstroom is dat meestal het inhoudsgebied van het ouderelement. Een kindelement met width: 40% in een omsluitend blok van 600px is 240px breed voordat eventuele binnenruimte of een rand volgens het content-boxmodel wordt toegevoegd. font-size: 150% gebruikt de lettergrootte van het ouderelement. Zelfs procentuele binnenruimte en marges boven en onder gebruiken de breedte van het omsluitende blok, niet de hoogte.

1vw is 1% van de viewportbreedte; 1vh is 1% van de viewporthoogte. In een viewport van 1280 bij 800 CSS-pixels is 50vw gelijk aan 640px en 10vh gelijk aan 80px. 100vw kan de breedte van de schuifbalk omvatten en horizontaal overlopende inhoud veroorzaken waar 100% van het ouderelement wel zou passen.

max-width: 65ch geeft een tekstkolom een breedte die samenhangt met het lettertype. Het is ongeveer een maat voor de leeslengte, geen belofte dat elke regel precies 65 tekens heeft.

Combineer eenheden met een berekening

width: calc(100% - 40px); trekt een vaste hoeveelheid af van een relatieve afmeting. Houd spaties rond + en -; calc(100%-40px) is ongeldig. Browsers rekenen lengtes relatief aan de lettergrootte om naar pixels, terwijl percentages van containerafmetingen tijdens de lay-outberekening worden vastgesteld. Ontwikkelaarstools tonen de resulterende afmetingen, zodat je zowel de referentie als de berekening kunt controleren.

Belangrijkste punten

  • Schrijf getallen direct tegen hun eenheid aan; nul kan op zichzelf staan.
  • em gebruikt het ouderelement voor de lettergrootte en het element zelf voor andere lengtes.
  • rem volgt het hoofdelement en voorkomt dat geneste lettergroottes op elkaar worden toegepast.
  • De referentie voor percentages hangt af van de eigenschap; procentuele binnenruimte gebruikt de breedte van de container.
  • Viewporteenheden volgen het venster; ch volgt het lettertype.
  • Gebruik spaties rond optelling en aftrekking binnen calc().
5

Meet boxen en regel tussenruimte

Elk zichtbaar element neemt ruimte in als een box. De breedte die je schrijft, kan alleen de inhoud of de hele box inclusief rand beschrijven en marges voegen daarbuiten nog een laag tussenruimte toe. Het weergavetype verandert welke eigenschappen voor afmetingen en tussenruimte effect hebben. Leer een box berekenen voordat je de afmetingen verandert en verklaar vervolgens veelvoorkomende verrassingen, zoals een overlopende kaart op volle breedte, een inline link die de breedte negeert of twee verticale marges die samenvallen.

5.1 Inhoud, binnenruimte, rand en marge

Van binnen naar buiten heeft een box inhoud, binnenruimte, een rand en een marge. De inhoud bevat tekst, afbeeldingen of kindelementen. De binnenruimte schept ruimte rond die inhoud. De rand omsluit de binnenruimte; de marge scheidt de box inclusief rand van aangrenzende boxen.

Een achtergrond vult de inhoud en binnenruimte en loopt door onder de rand, maar kleurt nooit de marge. Gebruik binnenruimte als de ruimte deel moet uitmaken van een gekleurde kaart. Gebruik marge voor ruimte daarbuiten. Marges kunnen negatief zijn; binnenruimte niet.

Lees de verkorte eigenschappen voor tussenruimte

margin, padding en border-width accepteren één tot vier waarden:

WaardenIngestelde kanten
10pxAlle vier
10px 20pxBoven en onder, dan links en rechts
10px 20px 30pxBoven, links en rechts, onder
10px 20px 30px 40pxBoven, rechts, onder, links

De volgorde met vier waarden loopt met de klok mee vanaf boven. Gebruik afzonderlijke eigenschappen zoals padding-left om na de verkorte eigenschap slechts één kant te veranderen. Lees de tweede waarde van een vorm met twee waarden niet als de onderkant: die stelt beide horizontale kanten in.

Bereken de standaardbox op basis van de inhoud
.card {
  width: 300px;
  padding: 20px;
  border: 5px solid;
  margin: 10px;
}

De beginwaarde voor box-sizing is content-box. De opgegeven breedte van 300px omvat alleen de inhoud. Tel twee keer 20px binnenruimte en twee keer 5px rand erbij op: de box inclusief rand is 350px breed. Tel de twee marges van 10px erbij op voor 370px horizontale ruimte.

De hoogte werkt op dezelfde manier als die expliciet is ingesteld, maar tekst heeft vaak een box nodig die kan groeien. Door height: auto te laten staan voorkom je dat veranderende inhoud in een vaste hoogte wordt opgesloten.

Neem binnenruimte en rand op in de breedte

Met box-sizing: border-box omvat dezelfde opgegeven breedte de binnenruimte en de rand. De box inclusief rand blijft 300px; trek 40px binnenruimte en 10px rand af om een inhoudsgebied van 250px te vinden. Marges blijven daarbuiten en leveren 320px horizontale ruimte op.

Een veelgebruikte CSS-reset past dit model toe op elementen en hun gegenereerde onderdelen:

*, *::before, *::after { box-sizing: border-box; }

box-sizing erft niet automatisch over, dus de regel selecteert de boxen rechtstreeks.

Bij een kindelement op volle breedte is het verschil goed te zien. In een container van 600px geeft width: 100%; padding: 0 20px; volgens het content-boxmodel een box inclusief rand van 640px, nog vóór een eventuele rand. Volgens het border-boxmodel omvat dezelfde opgegeven breedte van 600px de binnenruimte en past de box in de container.

Laat inhoud veilig passen

min-height stelt een ondergrens in en laat tegelijk groei toe. max-width: 800px laat een blok met automatische breedte krimpen in een smalle container en voorkomt dat het breder wordt dan 800px.

Als inhoud buiten een vaste box komt, bepaalt overflow het resultaat: visible laat de inhoud uitsteken, hidden snijdt die af, scroll vraagt om schuifbalken en auto maakt scrollen mogelijk wanneer nodig. pre { overflow: auto; } geeft een lange coderegel een eigen schuifgebied. Afsnijden is een slechte oplossing voor tekst die lezers nog nodig hebben; controleer eerst of de vaste afmeting nodig is.

Gebruik het boxdiagram in het paneel Computed om de waarden van de browser voor inhoud, binnenruimte, rand en marge met je berekening te vergelijken.

Belangrijkste punten

  • Binnenruimte ligt binnen de rand; de marge ligt erbuiten en blijft transparant.
  • De breedte volgens content-box sluit binnenruimte en rand uit.
  • De breedte volgens border-box omvat binnenruimte en rand, maar nooit de marge.
  • Verkorte eigenschappen voor tussenruimte lopen met de klok mee vanaf boven; kortere vormen delen waarden over kanten.
  • Gebruik flexibele hoogte en afmetingsgrenzen om ruimte te bieden aan veranderende inhoud.
  • overflow bepaalt wat er gebeurt met inhoud die buiten de box komt.

5.2 Weergave, centreren en samenvallende marges

Het weergavetype bepaalt hoe een box aansluit op zijn omgeving. Een blok begint normaal op een nieuwe regel en vult de beschikbare breedte als de breedte automatisch is. Een gewone inlinebox loopt mee binnen tekst en krijgt zijn afmetingen op basis van de inhoud. Een inline-blockbox behoudt de inlinepositie en accepteert tegelijk expliciete afmetingen.

Kies het gedrag dat je nodig hebt
WeergaveBreedte en hoogteGedrag van tussenruimte
blockVan toepassingMarges en binnenruimte scheiden boxen
Gewone inlineBepalen de boxafmetingen nietHorizontale tussenruimte beïnvloedt tekst in de buurt
inline-blockVan toepassingVerticale en horizontale tussenruimte beïnvloeden de omringende lay-out

Bij gewone inline-elementen zoals span en a hebben boven- en ondermarges geen effect. Verticale binnenruimte en randen worden getekend maar duwen aangrenzende regels niet uit elkaar, zodat ze die kunnen overlappen. Horizontale binnenruimte, randen en marges nemen wel ruimte in langs de regel.

nav a {
  display: inline-block;
  padding: 8px 16px;
}

Deze links blijven op een regel staan terwijl hun boxen met binnenruimte verticale ruimte reserveren. display: block zou elke link een eigen regel geven. Afbeeldingen zijn een bijzonder inlinegeval: ze accepteren breedte en hoogte. Hun standaarduitlijning op de basislijn kan onderaan een kleine ruimte overlaten voor letterstaarten; img { display: block; } verwijdert die ruimte bij de basislijn.

display: none verwijdert de box en de ruimte die die inneemt en zorgt dat schermlezers die niet voorlezen. visibility: hidden verbergt de box en behoudt de ruimte.

Centreer een box of de inhoud ervan
.page {
  max-width: 960px;
  margin: 0 auto;
}

In een bredere container stopt het blok met groeien bij 960px en verdelen de twee horizontale automatische marges de resterende ruimte gelijk. Bij een blok dat de container vult, blijft geen horizontale ruimte over om te verdelen. Automatische marges centreren geen gewone inlinebox en verticale automatische marges in de normale blokstroom worden nul.

text-align: center doet iets anders: het centreert inline-inhoud binnen een blok. Een gecentreerde alineabox kan nog steeds links uitgelijnde tekst hebben; een alinea op volle breedte kan gecentreerde tekst hebben zonder een smallere gecentreerde box te worden.

Herken samenvallende verticale marges

In de normale blokstroom kunnen aangrenzende boven- en ondermarges samenvallen. Twee positieve marges worden de grootste van de twee. Een kop met een ondermarge van 24px gevolgd door een alinea met een bovenmarge van 16px heeft een tussenruimte van 24px, niet 40px. Horizontale marges vallen niet samen.

Combineer bij positieve en negatieve marges de grootste positieve met de meest negatieve: 20px en −8px worden 12px. Als alle marges negatief zijn, wint de meest negatieve. Bij een lege box zonder scheidende inhoud, hoogte, rand of binnenruimte kunnen de eigen boven- en ondermarge samenvallen.

De bovenmarge van een eerste kindelement kan ook samenvallen met die van een ouderelement zonder scheidende rand, binnenruimte of eerdere inhoud. De ruimte verschijnt dan buiten de achtergrond van het ouderelement. Voeg binnenruimte of een rand toe aan het ouderelement, of verwijder de bovenmarge van het kindelement. Onder vergelijkbare voorwaarden kan de ondermarge van een laatste kindelement samenvallen; een hoogte of minimumhoogte op het ouderelement kan dat onderaan voorkomen.

Bij inline-blockboxen vallen marges niet samen, evenmin als bij flex- en griditems of zwevende en absoluut gepositioneerde boxen. Een eenvoudig patroon voor teksttussenruimte zet bovenmarges op nul en gebruikt ondermarges, met binnenruimte voor ruimte binnen containers.

Belangrijkste punten

  • Gewone inlineboxen negeren ingestelde breedte en hoogte; inline-blockboxen accepteren die.
  • Automatische horizontale marges centreren een smaller blok; text-align centreert de inline-inhoud ervan.
  • Aangrenzende positieve verticale blokmarges kunnen samenvallen tot de grootste waarde.
  • Binnenruimte op een ouderelement kan de marge van een eerste kindelement scheiden van de marge van het ouderelement.
  • display: none verwijdert ruimte; visibility: hidden behoudt die.
6

Geef leesbare tekst en afgewerkte oppervlakken vorm

Lettertypen, regelafstand en linktoestanden bepalen hoe prettig een lezer een pagina kan gebruiken. Achtergronden, randen en schaduwen onderscheiden vervolgens de boxen zonder hun betekenis te veranderen. Bouw tekststijlen met terugvalopties, houd essentiële inhoud in HTML en kies decoratie die de inhoud ondersteunt. Dezelfde box- en cascaderegels blijven gelden: een verkorte eigenschap kan een lettergewicht terugzetten, een rand kan breedte toevoegen en een focusomtreklijn kan een toestand tonen zonder iets te verplaatsen.

6.1 Lettertypelijsten en weblettertypen

Een lettertypekeuze is een voorkeur met een terugvalplan. Op verschillende apparaten staan verschillende lettertypen en een gedownload lettertype kan later dan de tekst binnenkomen. Een lettertypelijst houdt de pagina leesbaar en zorgt tegelijk voor een passende stijl.

Maak een lettertypelijst
body {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 1rem;
}

De browser probeert de familienamen op volgorde en gebruikt een beschikbaar lettertype. Zet namen met spaties tussen aanhalingstekens. Laat aanhalingstekens bij generieke families weg: "sans-serif" vraagt om een lettertype met precies die naam; sans-serif vraagt de browser om een geschikt generiek lettertype.

Generieke keuzes zijn onder andere serif, sans-serif, monospace, cursive, fantasy en system-ui. De laatste gebruikt het interfacelettertype van het systeem. Lettertypen die vaak webveilig worden genoemd, zoals Arial, Georgia en Verdana, komen veel voor, maar zijn niet gegarandeerd aanwezig. Een generieke terugvaloptie hoort nog steeds aan het einde.

font-size accepteert lengtes, percentages en sleutelwoorden voor grootte. Bij een hoofdelement van 16px geeft 1rem 16px en 2.5rem 40px. Relatieve groottes kunnen de instellingen van de lezer volgen.

Stel gewicht, stijl en de verkorte eigenschap zorgvuldig in

font-weight: normal is gelijk aan 400; bold is gelijk aan 700. Waarden zoals 300 en 600 vragen om andere gewichten als het lettertype die biedt. Als een gevraagd gewicht ontbreekt, kiest de browser een beschikbaar gewicht of maakt mogelijk zelf een vetgedrukte versie. Als alleen 400 en 700 zijn geladen, gebruikt een verzoek om 300 de versie voor 400. bolder en lighter zijn relatief ten opzichte van het ouderelement.

font-style: italic vraagt om een cursieve lettertypevariant; normal verwijdert die stijl. De verkorte eigenschap font heeft zowel de grootte als de familie nodig:

blockquote {
  font: italic 700 1.125rem/1.6 Georgia, serif;
}

Optionele stijl, variant en gewicht komen vóór de grootte. Een schuine streep koppelt de regelhoogte aan de grootte en de familie komt als laatste. Als de grootte of familie ontbreekt, is de verkorte eigenschap ongeldig. Andere weggelaten lettertype-instellingen worden teruggezet: font: 1rem Arial, sans-serif; zet een eerder vet gewicht terug op normaal.

Laad een lettertypebestand
@font-face {
  font-family: "Inter";
  src: url("fonts/inter-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
body { font-family: "Inter", Arial, sans-serif; }

@font-face wijst een CSS-familienaam toe aan een bestand. Gebruik die gedeclareerde naam in de lettertypelijst, niet de bestandsnaam. Relatieve bestandspaden beginnen vanaf de locatie van het stijlblad. WOFF2 is een gecomprimeerd formaat dat door huidige browsers wordt ondersteund.

Statische lettertypen hebben doorgaans afzonderlijke bestanden en regels nodig voor elk gewicht en elke stijl. Variabele lettertypen kunnen een reeks gewichten in één bestand bevatten. Laad de bestanden die het ontwerp daadwerkelijk gebruikt. font-display: swap toont direct een terugvallettertype en vervangt dat zodra het weblettertype beschikbaar is.

Een lettertypedienst kan een HTML-link en de familiedeclaratie leveren; door zelf te hosten voorkom je een lettertypeverzoek aan een server van derden. Controleer of de lettertypelicentie gebruik op websites toestaat. Als het lettertype er verkeerd uitziet, inspecteer dan het weergegeven lettertype en het bestandsverzoek. Bij een verkeerd gespelde CSS-familienaam wordt ongemerkt teruggevallen op een ander lettertype, dus leesbare tekst alleen bewijst niet dat het bedoelde lettertype is geladen.

Belangrijkste punten

  • Schrijf een lettertypelijst met een generieke terugvaloptie zonder aanhalingstekens.
  • Het lettergewicht hangt af van de lettertypevarianten of bereiken die daadwerkelijk beschikbaar zijn.
  • De verkorte eigenschap font vereist grootte en familie en zet weggelaten instellingen terug.
  • @font-face definieert een familienaam en het bestand dat die familie levert.
  • font-display: swap houdt tekst zichtbaar in een terugvallettertype terwijl een weblettertype laadt.

6.2 Regelafstand, lijsten en linktoestanden

Tekstvormgeving moet bruikbaar blijven als grootte, inhoud en invoermethode veranderen. Begin met regelafstand en leesbare breedtes en voeg daarna details voor lijsten en links toe die lezers laten zien hoe de inhoud werkt.

Laat de regelhoogte elke lettergrootte volgen

Gebruik een regelhoogte zonder eenheid, zoals line-height: 1.5. Bij lopende tekst van 16px maakt dit regels van 24px. Kindelementen erven het getal, dus een kop van 32px krijgt regels van 48px. Een waarde van 1.5em of 150% op het ouderelement wordt daarentegen berekend als 24px en een kindelement kan die vaste regelhoogte van 24px overerven, ook als de eigen tekst groter is. De standaardwaarde normal hangt af van het lettertype en ligt vaak rond 1,2.

body { font: 1.125rem/1.6 Georgia, serif; color: #222222; }
h1 { font: 700 2.25rem/1.2 Arial, sans-serif; }
p { max-width: 65ch; }

Bij een hoofdelement van 16px is de lopende tekst 18px met regels van 28,8px; de kop is 36px met regels van 43,2px. De begrenzing van de alinea voorkomt zeer lange regels op een breed scherm.

text-align plaatst inline-inhoud binnen een blok. Mogelijke waarden zijn left, right, center, justify, start en end; start en end volgen de schrijfrichting. De eigenschap verplaatst het blok zelf niet. Uitvullen in smalle kolommen kan grote ruimtes tussen woorden veroorzaken.

Verander de weergave zonder tekst te herschrijven

text-transform kan woorden in hoofdletters, kleine letters of met beginhoofdletters tonen zonder de HTML-tekst te veranderen. letter-spacing, word-spacing en text-indent regelen verschillende soorten tussenruimte. text-shadow: 1px 1px 2px rgb(0 0 0 / 0.5); geeft horizontale verschuiving, verticale verschuiving, vervaging en kleur.

text-decoration voegt onderstrepingen, bovenstrepingen of doorhalingen toe. De eigenschap kan ook stijl en kleur instellen, zoals in underline wavy crimson. Met de dikte en de afstand van de onderstreping stel je een lijn nauwkeuriger af. Lezers verwachten dat onderstreepte tekst een link is, dus gebruik die aanwijzing daarvoor.

Geef lijsten vorm zonder onbedoelde inspringing

list-style-type kiest markeringen zoals disc, square, decimal of lower-alpha. list-style-position: outside houdt markeringen buiten het tekstblok; inside plaatst ze in de eerste regel, zodat omgebroken regels onder de markering kunnen beginnen. list-style-image levert een afbeelding als markering en li::marker kan alleen de markering kleuren.

Gebruik voor een eenvoudige navigatielijst .menu { list-style: none; margin: 0; padding: 0; }. Als je alleen markeringen verwijdert, blijft de standaardbinnenruimte aan het begin van de lijst bestaan. list-style: square inside is een verkorte eigenschap die instellingen voor markeringen combineert.

Houd links zichtbaar tijdens gebruik

Zet toestandregels met gelijke specificiteit in de volgorde link, bezocht, focus, aanwijzen, actief. Een link kan tegelijk bezocht zijn en aangewezen worden; de bronvolgorde beslist tussen hun concurrerende kleurdeclaraties. :active betekent tijdens de activering, niet de huidige pagina.

Houd links herkenbaar met meer dan alleen kleur, doorgaans met een onderstreping in lopende tekst. Geef toetsenbordfocus een duidelijke indicator:

a:focus-visible {
  outline: 3px solid #f2a900;
  outline-offset: 2px;
}

Verwijder de focusomtreklijn niet tenzij een andere zichtbare focusstijl die vervangt. Een omtreklijn neemt geen ruimte in het boxmodel in, dus deze aanwijzing verschuift de omringende tekst niet.

Belangrijkste punten

  • Een regelhoogte zonder eenheid geeft een vermenigvuldigingsfactor door die de eigen lettergrootte van elk kindelement volgt.
  • text-align verplaatst inline-inhoud binnen een blok, niet het blok zelf.
  • Omzetting van hoofdletters en kleine letters verandert de weergave zonder de HTML-tekst te veranderen.
  • Het verwijderen van lijstmarkeringen verwijdert niet de standaardbinnenruimte van de lijst.
  • Linktoestanden kunnen overlappen; houd links herkenbaar en toetsenbordfocus zichtbaar.
  • Omtreklijnen tonen focus zonder de boxafmetingen te veranderen.

6.3 Achtergrondafbeeldingen, schaling en lagen

Een achtergrond staat achter de inhoud van een box. De kleur vult de inhoud en binnenruimte en loopt door onder de rand; de marge blijft transparant. Een afbeelding wordt boven de achtergrondkleur getekend, zodat een kleur een betrouwbaar oppervlak kan bieden terwijl de afbeelding laadt.

Bepaal het pad vanaf het stijlblad
.hero {
  background-color: #1a2b3c;
  background-image: url("../images/hero.jpg");
}

Als de CSS in css/styles.css staat en de afbeelding in de map images op het hoogste niveau van de website, gaat .. uit css voordat images wordt binnengegaan. Een CSS-afbeeldings-URL begint bij het CSS-bestand, anders dan de link naar het stijlblad, die bij het HTML-bestand begint. Controleer het afbeeldingsverzoek als een geldige regel alleen de terugvalkleur toont.

Achtergronden zijn decoratie. Een schermlezer kondigt ze niet als afbeeldingen aan. Zet een informatieve afbeelding in HTML met betekenisvolle alternatieve tekst. Een terugvalkleur die dicht bij de hoofdtint van de afbeelding ligt, helpt ook om tekst leesbaar te houden als de afbeelding langzaam laadt of ontbreekt.

Regel herhaling, schaal en positie

Afbeeldingen worden aanvankelijk op hun natuurlijke grootte herhaald. no-repeat gebruikt één exemplaar; repeat-x maakt een rij en repeat-y een kolom. space verdeelt hele tegels met tussenruimtes, terwijl round tegels aanpast zodat een heel aantal past.

GrootteResultaat
coverVul de hele box met behoud van verhoudingen; delen kunnen worden afgesneden
containLaat de hele afbeelding passen met behoud van verhoudingen; er kunnen lege ruimtes overblijven
200px 100pxStel beide afmetingen expliciet in
50% autoStel de relatieve breedte in en behoud de beeldverhouding

Voor een box van 800px bij 400px en een vierkante afbeelding van 1000px schaalt cover de afbeelding naar 800px in het vierkant, waardoor 400px van de afbeeldingshoogte buiten de box valt. Contain schaalt de afbeelding naar 400px in het vierkant; met no-repeat blijft 400px van de boxbreedte onbedekt. Alleen contain instellen schakelt herhaling niet uit.

De beginpositie is linksboven. background-position: center centreert een afbeelding; right 20px bottom 10px plaatst die op afstand van die randen. Een horizontale waarde komt eerst. Center plus cover houdt het midden zichtbaar als afsnijden nodig is.

Genereer en stapel afbeeldingen

Een kleurverloop is een afbeelding, dus zet het in background-image:

background-image: linear-gradient(to right, #1e90ff, #8a2be2);

De eerste kleur staat links en de tweede rechts. Hoeken en overgangspunten met een positie geven meer controle; radial-gradient(circle, white, steelblue) verspreidt zich vanuit het midden naar buiten. Een kleurverloop in background-color is ongeldig.

Scheid meerdere afbeeldingen met komma's; de eerste ligt bovenop. Een halfdoorzichtig zwart kleurverloop vóór een foto kan de afbeelding donkerder maken zonder de tekst te vervagen.

Gebruik de verkorte eigenschap bewust

background: url("hero.jpg") center / cover no-repeat #1a2b3c; combineert een afbeelding, positie, grootte, herhaling en kleur. De grootte volgt na de positie, na een schuine streep. Alleen de laatste laag kan een kleur hebben. Weggelaten achtergrondinstellingen worden teruggezet, dus een latere background: white; verwijdert een eerdere afbeelding.

background-attachment gebruikt aanvankelijk scroll, waarbij de achtergrond met het element meebeweegt als de pagina scrollt. fixed houdt de achtergrond vast aan de viewport. Test de daadwerkelijke box en tekst nadat je decoratie hebt toegevoegd; schalen en afsnijden mogen informatie die lezers nodig hebben niet verbergen.

Belangrijkste punten

  • CSS-afbeeldingspaden worden bepaald vanaf de locatie van het stijlblad.
  • cover vult de box en kan afsnijden; contain laat de hele afbeelding passen en kan ruimte overlaten.
  • Achtergrondafbeeldingen worden herhaald tenzij de herhaling wordt veranderd.
  • Kleurverlopen zijn afbeeldingen en de eerste achtergrondafbeelding wordt bovenop getekend.
  • De verkorte eigenschap background gebruikt een schuine streep tussen positie en grootte en zet weggelaten instellingen terug.
  • Zet informatieve afbeeldingen in HTML; achtergronden dienen als decoratie.

6.4 Randen, afgeronde hoeken, omtreklijnen en schaduwen

Een rand maakt deel uit van het boxmodel. Een omtreklijn of schaduw wordt rond de box getekend zonder extra ruimte te reserveren. Je keuze beïnvloedt zowel het uiterlijk als de afmetingen die een stijl oplevert.

Geef een rand een stijl
.note {
  border: 1px solid #cccccc;
  border-left: 4px solid crimson;
  padding-left: 12px;
}

De verkorte eigenschap stelt breedte, stijl en kleur in; deze onderdelen mogen in elke volgorde staan. De randstijl is aanvankelijk none, dus als je alleen breedte en kleur instelt, ontstaat geen zichtbare rand. Stijlen zijn onder andere solid, dashed, dotted, double, groove, ridge, inset en outset, evenals none en hidden.

Als de breedte wordt weggelaten, gebruikt de rand medium, meestal 3px in huidige browsers. Als de kleur wordt weggelaten, gebruikt de rand currentColor en krijgt die dezelfde kleur als de tekst van het element. Met verkorte eigenschappen voor afzonderlijke kanten zoals border-top en afzonderlijke eigenschappen zoals border-left-color kun je na een algemene rand een uitzondering toevoegen. Zo verwijdert border-top: none alleen de bovenrand na een randdeclaratie voor vier kanten.

Volgens het content-boxmodel voegt een rand van 2px aan elke kant 4px toe aan de breedte en hoogte. Als je de rand bij aanwijzen dikker maakt, kan daardoor inhoud in de buurt verschuiven. Houd de randbreedte gelijk en verander de kleur, of gebruik een omtreklijn als aanwijzing die geen ruimte inneemt. Volgens het border-boxmodel gebruikt een dikkere rand daarentegen meer van de binnenkant van de opgegeven box.

Rond hoeken af in een voorspelbare volgorde

border-radius: 8px rondt alle hoeken af, ook als de rand zelf onzichtbaar is. Bij vier waarden is de volgorde linksboven, rechtsboven, rechtsonder, linksonder. Twee waarden gelden voor tegenoverliggende hoekparen: de eerste voor linksboven en rechtsonder, de tweede voor rechtsboven en linksonder.

border-radius: 50% maakt een vierkante box rond en een rechthoekige box ellipsvormig. De eigen achtergrond wordt langs die afgeronde rand afgesneden. De hoekafronding snijdt overlopende inhoud van kindelementen niet zelf af; dat is een afzonderlijke keuze voor overflow. De hoekafronding verandert de gemeten afmetingen van de box niet.

Voeg een focuslijn of diepte toe
.link:focus-visible {
  outline: 3px solid navy;
  outline-offset: 2px;
}

Een omtreklijn wordt buiten de rand getekend en neemt geen ruimte in de lay-out in. De afstand creëert een ruimte tussen de rand en de omtreklijn. De lijn is een nuttige focusaanwijzing omdat die kan verschijnen zonder aangrenzende boxen te verplaatsen.

box-shadow: 0 2px 6px rgb(0 0 0 / 0.2); geeft een horizontale verschuiving van nul, een verschuiving van 2px omlaag, een vervaging van 6px en een halfdoorzichtige zwarte kleur. Een optionele spreidingswaarde komt na de vervaging. inset tekent de schaduw binnen de box; met komma's gescheiden waarden voegen meerdere schaduwen toe. Schaduwen volgen afgeronde hoeken en voegen geen ruimte toe aan het boxmodel.

Controleer een afgewerkte kaart

Een kaart met width: 280px; padding: 16px; border: 1px solid #dddddd; is volgens het content-boxmodel 314px breed. Tel twee keer 16px en twee keer 1px op bij 280px. Volgens het border-boxmodel blijft de kaart 280px breed en blijft 246px over voor de inhoud. Een hoekafronding van 12px en een zachte schaduw veranderen geen van beide berekeningen. Ze veranderen de getekende rand, niet de afmetingen die worden gebruikt om andere boxen te plaatsen.

Belangrijkste punten

  • Een zichtbare rand heeft een stijl zoals solid nodig.
  • Randen tellen mee bij boxafmetingen; omtreklijnen en schaduwen reserveren geen extra ruimte in de lay-out.
  • Hoekafrondingen lopen met de klok mee vanaf linksboven; kortere vormen koppelen hoeken aan elkaar.
  • Een hoekafronding van 50% maakt een vierkant rond en een rechthoek ellipsvormig.
  • Een boxschaduw vermeldt horizontale en verticale verschuiving, daarna optionele vervaging en spreiding en vervolgens de kleur.

Webpagina's vormgeven met CSS: voorbeelden

6 Walkthroughs

1

Laat een stijlblad werken en inspecteer het

10 stappen
Koppel een pagina aan CSS, volg een kleine regel en achterhaal waarom een wijziging niet verschijnt.
  1. 1
    IntroductieVan betekenisvolle HTML naar een vormgegeven pagina

    Een kop en alinea hebben al stijlen van de browser. Je geeft ze een gekozen lettertype en kleur en volgt het resultaat terug naar de CSS.

    De eerste taak is een betrouwbare koppeling tussen bestanden. Daarna moet een regel overeenkomen met het element, een geldige declaratie bevatten en voor de betreffende eigenschap winnen. Behandel dat als afzonderlijke controles wanneer de pagina niet verandert.

  2. 2
    VoorbeeldKoppel een extern bestand

    Stel dat index.html naast een map met de naam css staat, die styles.css bevat. Voeg dit toe binnen de HTML-head:

    <link rel="stylesheet" href="css/styles.css">
    

    Het pad begint bij het HTML-bestand en gaat de CSS-map in. Door regels in dat externe bestand op te slaan kunnen andere pagina's naar hetzelfde ontwerp linken. Bij een verkeerd gespeld pad kan de HTML leesbaar blijven terwijl geen van deze auteursstijlen laadt.

  3. 3
    UitlegSchrijf en lees één regel

    Zet dit in het gekoppelde stijlblad:

    p {
      color: navy;
      font-size: 18px;
    }
    

    p selecteert alinea's. De accolades bevatten twee declaraties, die elk een eigenschap aan een waarde koppelen. De puntkomma's scheiden de declaraties. Laad de pagina opnieuw: een overeenkomende alinea krijgt marineblauwe tekst en een lettergrootte van 18px, tenzij een declaratie met hogere voorrang een van die eigenschappen verandert.

  4. 4
    UitdagingHerstel een ongeldige waarde

    Een regel luidt p { font-size: 18 px; color: teal; }. Voorspel het effect en herstel de declaratie voor de grootte.

    ---reveal---

    De blauwgroene kleur kan worden toegepast, maar de declaratie voor de grootte is ongeldig omdat het getal en de eenheid van een lengte tegen elkaar aan moeten staan. Verander die in font-size: 18px;. De browser slaat de ongeldige declaratie over, niet het hele blok, dus een werkende kleur bewijst niet dat de waarde voor de grootte is geaccepteerd.

  5. 5
    KernpuntZie wat een verkorte eigenschap terugzet

    Deze declaraties behouden de foto niet:

    background-image: url("sky.jpg");
    background: lightblue;
    

    De verkorte eigenschap zet achtergrondeigenschappen die worden weggelaten terug, waaronder de afbeelding. Schrijf eerst een algemene verkorte eigenschap en daarna de afzonderlijke uitzondering als beide behouden moeten blijven. Dit verklaart een geldig lijkende wijziging die verdwijnt, ook als het pad en de selector correct zijn.

  6. 6
    VerbandBehoud nuttige browserstandaarden

    Grote koppen, tussenruimte bij alinea's en lijstmarkeringen zijn al aanwezig door het browserstijlblad. Je regels wijzigen dat uitgangspunt.

    body { margin: 0; } verwijdert een specifieke standaardtussenruimte. Als je elke marge en binnenruimte terugzet, verwijder je ook nuttige tussenruimte tussen alinea's en de inspringing van lijsten. Kies het HTML-kopniveau om de betekenis en verander daarna de lettergrootte; als je alleen voor het uiterlijk een kleiner kopniveau kiest, verandert de documentstructuur.

  7. 7
    TipInspecteer een eigenschap voordat je gaat gissen

    Klik met de rechtermuisknop op de alinea en kies Inspecteren. Zoek de regel in Styles. Een ontbrekende regel wijst op een probleem met de selectie of het laden; een waarschuwing wijst op ongeldige CSS; een doorgestreepte declaratie heeft de cascade verloren.

    Computed toont de resulterende waarden en het boxdiagram. Test daar een wijziging en sla die daarna op in je stijlblad. Een wijziging tijdens de inspectie is op zichzelf tijdelijk en verdwijnt wanneer de browser de opgeslagen bestanden opnieuw laadt.

  8. 8
    UitdagingVerklaar een resterende tussenruimte bij een lijst

    Een navigatielijst heeft list-style: none, maar de items blijven ingesprongen. De regel is geldig en niet doorgestreept. Wat moet je inspecteren en veranderen?

    ---reveal---

    Inspecteer de binnenruimte van de lijst. Het verwijderen van markeringen verwijdert niet de standaardbinnenruimte aan het begin. Zet die binnenruimte terug, meestal met padding: 0, om de inspringing te verwijderen; voeg daarna bewust tussenruimte toe als het ontwerp die nodig heeft. De instelling voor markeringen en de tussenruimte van de box zijn afzonderlijke eigenschappen.

  9. 9
    UitdagingVolg de mislukte wijziging

    Een pagina toont nog steeds de standaardvormgeving van alinea's. Het netwerkpaneel meldt een mislukt verzoek voor styles.css, terwijl het werkelijke bestand css/styles.css is. Wat moet je eerst herstellen en hoe controleer je het resultaat?

    ---reveal---

    Corrigeer de link naar het stijlblad in de HTML naar css/styles.css. Laad de pagina opnieuw, controleer of het verzoek slaagt en inspecteer daarna de alinea op de overeenkomende regel. De selectorspecificiteit verhogen helpt niet zolang het stijlblad met die selector niet laadt.

  10. 10
    SamenvattingEen betrouwbare aanpak voor debuggen

    Begin met een geldige HTML-doctype en een correct gekoppeld stijlblad. Een regel heeft vervolgens een overeenkomende selector en geldige eigenschapswaarden nodig. Verkorte eigenschappen kunnen eerdere afzonderlijke eigenschappen terugzetten, ook als elke declaratie geldig is.

    Gebruik het netwerkpaneel voor het laden, het stijlenpaneel voor overeenkomsten en voorrang en het paneel Computed voor uiteindelijke afmetingen. Bewaar geslaagde experimenten in het CSS-bestand, zodat ze behouden blijven na opnieuw laden. Browserstandaarden blijven deel van de verklaring wanneer je regels een eigenschap ongemoeid laten.

2

Lees selectors aan de hand van de HTML-boom

12 stappen
Selecteer herbruikbare klassen, toestanden, onderdelen en structurele relaties zonder extra elementen te selecteren.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBeschrijf de bedoelde selectie
  2. 2
    VoorbeeldHergebruik één klasse op meerdere elementen
  3. 3
    UitdagingEen spatie verandert het doelelement
  4. 4
    TipDeel regels zonder nesting te vereisen
  5. 5
    UitlegSelecteer op attributen en huidige toestanden
  6. 6
    VoorbeeldTel zusterelementen, niet alleen alinea's
  7. 7
    UitdagingKies een markering zonder tekst te vervangen
  8. 8
    UitlegZoek directe kindelementen in een geneste lijst
  9. 9
    VoorbeeldVolg de twee relaties tussen zusterelementen
  10. 10
    UitdagingHoud hetzelfde ouderelement in beeld
  11. 11
    UitdagingCombineer locatie met toestand
  12. 12
    SamenvattingLees de selector als een selectietest
3

Volg een conflict van voorrang tot overerving

13 stappen
Bepaal welke declaraties winnen, bereken specificiteit en maak onderscheid tussen lokale en overgeërfde waarden.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieEén element kan meerdere winnaars hebben
  2. 2
    UitlegFilter voordat je vergelijkt
  3. 3
    VoorbeeldBepaal welke inline kleur wint
  4. 4
    KernpuntGebruik lagen voordat je sterkere selectors gebruikt
  5. 5
    UitdagingBenoem de beslissende stap
  6. 6
    VoorbeeldTel selectoronderdelen per kolom
  7. 7
    UitlegBehandel functionele selectors
  8. 8
    UitdagingVergelijk zonder kolommen op te tellen
  9. 9
    VerbandLaat tekst overerven en houd boxen gescheiden
  10. 10
    UitlegKies hoe je wilt terugzetten
  11. 11
    UitdagingOnderscheid een kindelement van de selector van zijn ouderelement
  12. 12
    UitdagingVolg de volledige beslissing
  13. 13
    SamenvattingGeef elke beslissing een eigen taak
4

Kies een kleur en bereken een relatieve grootte

10 stappen
Interpreteer kleurkanalen en transparantie en volg daarna referenties voor lettertype, container en viewport.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieLees de referentie achter de waarde
  2. 2
    VoorbeeldOntcijfer drie kleurkanalen
  3. 3
    KernpuntHoud tekst ondoorzichtig boven een halfdoorzichtige vulling
  4. 4
    UitdagingControleer de juiste drempel
  5. 5
    VoorbeeldBereken de tekstgrootte vóór de tussenruimte
  6. 6
    VerbandVoorkom herhaalde groei in geneste tekst
  7. 7
    UitlegGeef percentages de juiste referentie
  8. 8
    UitdagingPas twee verschillende referenties toe
  9. 9
    UitdagingVerbind lettergrootte met contrast
  10. 10
    SamenvattingKies wat de waarde moet volgen
5

Meet een kaart en verklaar de tussenruimtes

11 stappen
Bereken beide boxmodellen en volg daarna inlinegedrag, centrering en samenvallende marges.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBegin bij de inhoud en werk naar buiten
  2. 2
    UitlegBenoem de vier lagen
  3. 3
    VoorbeeldBereken een kaart volgens content-box
  4. 4
    VoorbeeldVerander wat de breedte omvat
  5. 5
    UitdagingVerhelp overloop bij volle breedte
  6. 6
    VerbandLaat een link afmetingen accepteren
  7. 7
    VoorbeeldVerdeel de resterende horizontale ruimte
  8. 8
    KernpuntCombineer verticale marges
  9. 9
    UitdagingVoorspel een tussenruimte met verschillende tekens
  10. 10
    UitdagingBereken de gecentreerde kaart opnieuw
  11. 11
    SamenvattingMeet de laag die het probleem veroorzaakt
6

Maak leesbare tekst en een afgewerkte kaart

15 stappen
Stel een betrouwbaar lettertype in, houd links bruikbaar en voeg achtergronden en randen toe zonder onverwacht terugzetten of veranderingen in afmetingen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieGeef elke visuele keuze een doel
  2. 2
    UitlegKies een betrouwbare lettertypelijst
  3. 3
    VoorbeeldLaad een lettertypevariant en houd tekst zichtbaar
  4. 4
    UitdagingHerken het terugzetten door een verkorte font-eigenschap
  5. 5
    VoorbeeldHoud de regelafstand evenredig
  6. 6
    TipHoud menu's en links begrijpelijk
  7. 7
    UitdagingMaak onderscheid tussen het blok en de inhoud
  8. 8
    VoorbeeldVolg een achtergrondpad
  9. 9
    VoorbeeldSchaal een vierkante foto in een brede box
  10. 10
    KernpuntPlaats een tint als laag boven een foto
  11. 11
    UitdagingHoud de volledige foto zichtbaar
  12. 12
    UitlegTeken een rand zonder aangrenzende elementen te verplaatsen
  13. 13
    UitdagingRond de box af en behoud de afmeting
  14. 14
    UitdagingWerk een stabiele interactieve kaart af
  15. 15
    SamenvattingVerbind decoratie met de onderliggende regels

Webpagina's vormgeven met CSS: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Lees regels en voorspel eenvoudige resultaten10 Oefenvragen

Vraag 1 van 10

Een regel bevat color: 18px; padding: 12px;. Wat gebeurt er met deze declaraties?
  1. Beide declaraties worden genegeerd.
  2. De kleur geldt; de binnenruimte wordt genegeerd.
  3. De kleur wordt genegeerd; de binnenruimte geldt.
  4. Beide declaraties gelden normaal.
Toon antwoordVerberg antwoord
Antwoord: C
18px is een lengte en dus geen geldige waarde voor color; de browser negeert die declaratie. De waarde voor de binnenruimte is geldig en geldt nog steeds. Een ongeldige waarde maakt niet elke declaratie in hetzelfde blok ongeldig. Als je beide declaraties zou afwijzen, zou een werkende stijl verloren gaan.

Vraag 2 van 10

Een pagina heeft geen CSS van de auteur, maar een lijst is toch ingesprongen en de items hebben opsommingstekens. Waar komen deze stijlen vandaan?
  1. Uit het browserstijlblad.
  2. Uit de overgeërfde marges van de lijsttekst.
  3. Uit de inline declaraties van het HTML-bestand.
  4. Uit het automatische stijlblad van de editor.
Toon antwoordVerberg antwoord
Antwoord: A
De browser levert standaard-CSS voor HTML-elementen, waaronder lijstmarkeringen en inspringing. Er is geen stijlblad van de auteur nodig om die standaardstijlen te laten verschijnen. Marges worden normaal niet overgeërfd en de zichtbare markeringen van de lijst tonen niet aan dat het HTML-bestand inline stijldeclaraties bevat.

Vraag 3 van 10

Een element heeft class="panel featured". Welke selector vereist beide klassewoorden op datzelfde element?
  1. .panel .featured
  2. .panel, .featured
  3. panel.featured
  4. .panel.featured
Toon antwoordVerberg antwoord
Antwoord: D
Door de twee klasseselectors zonder spatie te verbinden moet één element aan beide voorwaarden voldoen. Een spatie zou een afstammeling met featured binnen een panel selecteren, wat een andere relatie is. Een komma zou elk van beide klassen onafhankelijk toestaan en dus ook elementen bereiken die maar één van de vereiste klassen hebben.

Vraag 4 van 10

Een artikel bevat een h2, gevolgd door twee p-elementen. Wat selecteert article p:first-child?
  1. Alleen de eerste alinea.
  2. Geen van beide alinea's.
  3. Alleen de tweede alinea.
  4. Beide alinea's.
Toon antwoordVerberg antwoord
Antwoord: B
:first-child vraagt of de alinea het eerste kindelement van haar ouderelement is. De kop staat op die positie, dus geen van beide alinea's komt overeen. Als je de eerste alinea zou selecteren, zou je het eerste kindelement verwarren met het eerste element van een type; p:first-of-type zou die andere selectie in dit artikel uitdrukken.

Vraag 5 van 10

Twee normale auteursregels buiten lagen zijn .badge { color: teal; } gevolgd door .badge { color: maroon; }. Welke kleur wint?
  1. Blauwgroen.
  2. Kastanjebruin.
  3. De kleur van het ouderelement.
  4. De standaardkleur van de browser.
Toon antwoordVerberg antwoord
Antwoord: B
Beide declaraties hebben dezelfde herkomst, hetzelfde belang, dezelfde laagstatus en dezelfde selectorspecificiteit. De latere declaratie wint daarom en geeft kastanjebruin. Als je blauwgroen kiest, behandel je de eerste declaratie als blijvend, maar de bronvolgorde beslist deze gelijke stand in het voordeel van de laatste toepasselijke declaratie.

Vraag 6 van 10

Wat is de specificiteit ID-CLASS-TYPE van .panel > a:hover?
  1. 0-1-2
  2. 0-2-2
  3. 1-1-1
  4. 0-2-1
Toon antwoordVerberg antwoord
Antwoord: D
De klasse en de pseudoklasse hover voegen elk één toe in de kolom CLASS en a voegt één toe in TYPE. De kindcombinator voegt niets toe, dus het resultaat is 0-2-1. Als je de combinator als nog een type telt, krijg je ten onrechte 0-2-2; relatietekens dragen geen specificiteitsgewicht.

Vraag 7 van 10

Welke hexadecimale kleur met zes cijfers is gelijk aan #4bd?
  1. #44bbdd
  2. #40b0d0
  3. #444bdd
  4. #4b4bdd
Toon antwoordVerberg antwoord
Antwoord: A
Je breidt de hexadecimale vorm met drie cijfers uit door elk cijfer binnen zijn kanaalpaar te herhalen: 4 wordt 44, b wordt bb en d wordt dd. Het resultaat is #44bbdd. Als je nullen toevoegt om #40b0d0 te maken, veranderen de kanaalwaarden. Zo maak je een andere kleur in plaats van de korte vorm uit te breiden.

Vraag 8 van 10

Een element volgens content-box heeft width: 240px; padding: 12px; border: 3px solid; margin: 8px;. Wat is de breedte van de box inclusief rand?
  1. 240px.
  2. 255px.
  3. 270px.
  4. 286px.
Toon antwoordVerberg antwoord
Antwoord: C
De inhoudsbreedte is 240px en beide kanten voegen samen 24px binnenruimte plus 6px rand toe, wat 270px geeft. De zijmarges van 8px liggen buiten de box inclusief rand. Als je die meetelt, krijg je 286px horizontale ruimte; dat is een andere maat dan de gevraagde breedte.

Vraag 9 van 10

Welke lettertypelijst biedt benoemde keuzes en een werkende generieke terugvaloptie?
  1. "Noto Sans", Arial, "sans-serif"
  2. "Noto Sans Arial", sans-serif
  3. "Noto Sans", "Arial sans-serif"
  4. "Noto Sans", Arial, sans-serif
Toon antwoordVerberg antwoord
Antwoord: D
De familienamen zijn afzonderlijke keuzes, gescheiden door komma's, en de generieke familie sans-serif zonder aanhalingstekens blijft beschikbaar als de benoemde lettertypen ontbreken. Als je die generieke naam tussen aanhalingstekens zet, wordt het een letterlijke lettertypenaam. De lijst kan dan de bedoelde terugval op een categorie verliezen, ook al wordt de declaratie nog geparst.

Vraag 10 van 10

Een section heeft font-size: 20px; line-height: 1.4;. Het kindelement h2 heeft font-size: 1.5em en geen declaratie voor de regelhoogte. Wat zijn de lettergrootte en regelhoogte van de kop?
  1. Tekst van 30px met regels van 42px.
  2. Tekst van 30px met regels van 28px.
  3. Tekst van 20px met regels van 28px.
  4. Tekst van 30px met regels van 45px.
Toon antwoordVerberg antwoord
Antwoord: A
De lettergrootte van de kop is 1,5 keer de 20px van het ouderelement en wordt dus 30px. De kop erft de vermenigvuldigingsfactor 1,4 zonder eenheid en past die toe op zijn eigen grootte, wat regels van 42px geeft. Een regelhoogte van 28px zou ontstaan door een vaste berekende lengte over te erven, niet het getal zonder eenheid dat hier wordt gebruikt.
Set 2: Pas selectors, tussenruimte en decoratie toe10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Het HTML-bestand is /site/pages/team.html; het stijlblad is /site/css/theme.css. Welke relatieve href bereikt het stijlblad?
  1. css/theme.css
  2. ../css/theme.css
  3. ../pages/theme.css
  4. ../../css/theme.css
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een section bevat een h3, een p, een aside en daarna nog een p. Wat selecteert h3 ~ p binnen die sectie?
  1. Alleen de volgende alinea.
  2. Alleen de laatste alinea.
  3. De kop en beide alinea's.
  4. Beide alinea's als zusterelementen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een ouderelement komt overeen met #article { color: olive; } en de kindalinea komt overeen met p { color: purple; }. Welke kleur gebruikt de alinea?
  1. Paars uit de eigen regel.
  2. Olijfgroen van de ID van het ouderelement.
  3. Olijfgroen totdat een klasse wordt toegevoegd.
  4. De standaardkleur van de browser.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een alinea heeft style="color: coral;" en komt overeen met .notice { color: indigo !important; } in CSS van de auteur. Welke kleur wordt gebruikt?
  1. Koraal.
  2. De kleur van het ouderelement.
  3. Indigo.
  4. De standaardkleur van de browser.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

De lettergrootte van een ouderelement is 18px. Het kindelement heeft font-size: 1.5em; padding: 0.5em;. Hoeveel binnenruimte wordt aan elke kant ingesteld?
  1. 9px.
  2. 27px.
  3. 13,5px.
  4. 36px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een link blijft een gewone inlinebox en width: 180px heeft geen effect op de afmetingen. Welke displaywaarde houdt de link op inlineniveau en staat die breedte wel toe?
  1. inline-block
  2. inline
  3. none
  4. block
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een kaart volgens border-box heeft width: 260px; padding: 18px; border: 2px solid;. Hoe breed is het inhoudsgebied?
  1. 260px.
  2. 224px.
  3. 300px.
  4. 220px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een regel gebruikt background-color: linear-gradient(white, navy);. Waarom wordt het kleurverloop niet getoond?
  1. Een kleurverloop heeft border-style nodig.
  2. Een kleurverloop is een afbeeldingswaarde.
  3. Een kleurverloop heeft een herhalingswaarde nodig.
  4. Benoemde kleuren zijn ongeldige overgangspunten.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een box heeft border-width: 4px; border-color: teal; en geen andere randdeclaraties. Waarom is geen rand zichtbaar?
  1. De beginwaarde van de randbreedte is nul.
  2. De beginwaarde van de randstijl is none.
  3. De randkleur heeft een alfawaarde nodig.
  4. De breedte heeft border-box nodig.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Normale CSS van de auteur declareert @layer base, widgets;. Base bevat #info { color: teal; }; widgets bevat .card { color: maroon; }. Een regel buiten lagen p { color: navy; } komt ook overeen met <p id="info" class="card">. Welke kleur wint?
  1. Blauwgroen.
  2. Kastanjebruin.
  3. De overgeërfde kleur.
  4. Marineblauw.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Volg waarden door werkelijke paginastructuren10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een declaratie werkt nadat je die in de ontwikkelaarstools hebt aangepast, maar de wijziging verdwijnt na opnieuw laden. Wat moet je doen om die te behouden?
  1. Sla de werkende declaratie op in het stijlblad.
  2. Sla een schermafbeelding van het stijlenpaneel op.
  3. Laad opnieuw met hetzelfde element geselecteerd.
  4. Verplaats het element naar een ander HTML-ouderelement.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een regel .alert.urgent komt niet overeen met <p class="alert"><span class="urgent">Update</span></p>. Welke selector richt zich alleen op de urgente span wanneer die binnen een waarschuwing staat?
  1. .alert.urgent
  2. .alert, .urgent
  3. .alert .urgent
  4. p.alert.urgent
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een link heeft href="manual.PDF". Welke selector komt overeen met een PDF-uitgang ongeacht hoofdletters of kleine letters?
  1. a[href^=".pdf" i]
  2. a[href=".pdf" i]
  3. a[href~=".pdf" i]
  4. a[href$=".pdf" i]
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een div class="tools" bevat een directe ul met link A binnen een li, plus een section met nog een ul met link B. Boven beide links staat de aanwijzer. Waarmee komt .tools > ul a:hover overeen?
  1. Alleen link B.
  2. Alleen link A.
  3. Zowel link A als link B.
  4. Noch link A, noch link B.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Twee normale auteursdeclaraties in dezelfde laag gebruiken #menu a en .menu a.selected. Beide komen overeen met één link. Welke selector heeft een hogere specificiteit?
  1. #menu a
  2. .menu a.selected
  3. Ze hebben gelijke specificiteit.
  4. De dichtstbijzijnde voorouder beslist.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

CSS van de auteur stelt div { display: initial; } in. Welke displaywaarde krijgt de div door die declaratie?
  1. block
  2. inline-block
  3. none
  4. inline
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een bijschrift gebruikt background-color: rgb(0 0 0 / 0.5); color: white; boven een foto. Een ontwikkelaar vervangt de achtergrond met alfawaarde door ondoorzichtig zwart en voegt opacity: 0.5 toe aan het bijschrift. Wat verandert er?
  1. Alleen de achtergrond blijft halfdoorzichtig.
  2. De tekst wordt ook gedeeltelijk transparant.
  3. De tekst wordt ook ondoorzichtig zwart.
  4. De foto wordt onderdeel van het bijschrift.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een omsluitend blok is 420px breed en 300px hoog. Waartoe wordt padding-top: 10% op het kindelement berekend?
  1. 30px.
  2. 10px.
  3. 42px.
  4. 72px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

In de normale blokstroom vallen twee aangrenzende verticale marges samen: de eerste is 26px en de tweede is −9px. Welke tussenruimte ontstaat?
  1. 26px.
  2. 35px.
  3. 17px.
  4. −9px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een vierkante foto wordt één keer, zonder herhaling, gebruikt achter een banner van 900px bij 300px. Wat gebeurt er met background-size: contain; background-position: center;?
  1. Een vierkante afbeelding van 300px laat aan elke kant 300px ruimte over.
  2. Een vierkante afbeelding van 900px verliest boven en onder 300px.
  3. Een afbeelding van 900px bij 300px vult de banner door uitrekken.
  4. Een vierkante afbeelding van 300px laat alle 600px rechts over.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Los concurrerende stijlen en veranderende boxen op10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Met welk CSS-commentaar kun je een groep regels veilig van een label voorzien?
  1. // Article styles
  2. <!-- Article styles -->
  3. # Article styles
  4. /* Article styles */
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een regel h2, p..lead, blockquote { color: teal; } verandert geen van deze elementen. Wat verklaart het resultaat?
  1. Een komma vereist dat alle selectors met één element overeenkomen.
  2. Een ongeldige selector maakt de gewone selectorlijst ongeldig.
  3. De blockquote-selector maakt de kopselector ongedaan.
  4. Een lijst kan geen klasse- en typeselectors combineren.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een section bevat <h2>News</h2><aside><p>A</p></aside><p>B</p><p>C</p>. Welke tekst wordt respectievelijk door h2 + p en h2 ~ p geselecteerd?
  1. A; B en C.
  2. B; B en C.
  3. Geen; B en C.
  4. Geen; A, B en C.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

CSS van de auteur declareert @layer foundations, details;. Foundations bevat .flag { color: teal !important; }; details bevat #notice { color: purple !important; }; een regel buiten lagen bevat p { color: navy !important; }. Alle regels komen overeen met één alinea. Welke kleur wint?
  1. Blauwgroen.
  2. Paars.
  3. Marineblauw.
  4. De kleur van het ouderelement.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een tekstkleur op normale grootte heeft op wit een gemeten contrast van 4,2:1. Wat is het resultaat volgens de contrasteis van WCAG AA?
  1. De tekst voldoet aan het minimum voor normale tekst.
  2. De tekst voldoet niet omdat alle tekst 7:1 nodig heeft.
  3. De tekst voldoet alleen omdat wit wordt gebruikt.
  4. De tekst voldoet niet aan het minimum voor normale tekst.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een kindelement volgens content-box heeft width: 100%; padding: 0 15px; in een inhoudsgebied van 480px breed, zonder randen of marges. Hoe breed is de box inclusief rand?
  1. 480px.
  2. 510px.
  3. 495px.
  4. 450px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

De box inclusief rand van een kaart is 360px breed. De regel is width: 320px; padding: 18px; border: 2px solid; met het content-boxmodel. De kaart moet 360px breed blijven nadat je overschakelt op border-box en de binnenruimte verhoogt naar 24px. Wat worden de opgegeven breedte en de inhoudsbreedte?
  1. 360px opgegeven; 308px inhoud.
  2. 320px opgegeven; 268px inhoud.
  3. 360px opgegeven; 312px inhoud.
  4. 372px opgegeven; 320px inhoud.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een element krijgt eerst font-weight: 700; font-style: italic; en daarna font: 1.25rem/1.4 Arial, sans-serif;. Welk gewicht en welke stijl gelden na de verkorte eigenschap?
  1. Vet gewicht en cursieve stijl.
  2. Normaal gewicht en cursieve stijl.
  3. Normaal gewicht en normale stijl.
  4. Vet gewicht en normale stijl.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een navigatielijst heeft list-style: none;, maar de items zijn nog steeds ingesprongen. Welke extra regel verwijdert de standaardinspringing?
  1. text-indent: 0;
  2. list-style-position: inside;
  3. text-align: start;
  4. padding: 0;
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een inline-blocklink gebruikt het content-boxmodel met een rand van 1px. Bij aanwijzen moet een sterkere aanwijzing verschijnen terwijl de inhoudsbreedte en alle boxafmetingen behouden blijven. Welke wijziging voldoet daaraan?
  1. Verhoog de randbreedte naar 3px.
  2. Voeg bij aanwijzen een omtreklijn van 3px toe.
  3. Schakel over op het border-boxmodel.
  4. Voeg aan elke kant 2px binnenruimte toe.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Onderzoek en verklaar onbekende combinaties10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een verzoek om een stijlblad slaagt. De regel verschijnt voor een geïnspecteerde span en width: 160px is geldig en niet doorgestreept, maar de span is nog steeds slechts even breed als de tekst. Wat verklaart dit?
  1. Het verzoek gebruikte het verkeerde stijlblad.
  2. De span erft de breedte van een ouderelement.
  3. De span is een gewone inlinebox.
  4. De marge van de span verbergt de breedte.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een lijst heeft precies acht li-kindelementen en geen andere kindelementen. Welke kindposities komen overeen met li:nth-child(3n+2)?
  1. 2, 5 en 8.
  2. 3 en 6.
  3. 1, 4 en 7.
  4. 2, 4, 6 en 8.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Alle declaraties zijn normale auteursregels buiten lagen. Een link binnen <section id="main"> komt overeen met :where(#main) a { color: teal; }, :is(#spare, section) a { color: purple; } en daarna .chosen:hover { color: navy; }. De link heeft de klasse chosen en de aanwijzer staat erboven. Welke kleur wint?
  1. Blauwgroen.
  2. Marineblauw.
  3. De overgeërfde kleur.
  4. Paars.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een container heeft color: maroon; background-color: beige;. Het kindelement heeft color: unset; background-color: unset; en geen andere relevante stijlen. Wat zijn de eigen kleur- en achtergrondwaarden van het kindelement?
  1. Kastanjebruine tekst en een beige achtergrond.
  2. Kastanjebruine tekst en een transparante achtergrond.
  3. De beginwaarde voor tekstkleur en een transparante achtergrond.
  4. De beginwaarde voor tekstkleur en een beige achtergrond.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

De lettergrootte van het hoofdelement is 20px en een container is 700px breed. Het kindelement volgens border-box heeft width: calc(100% - 4rem); padding: 1em; border: 2px solid; font-size: 1.5rem;. Wat is de inhoudsbreedte van het kindelement?
  1. 620px.
  2. 556px.
  3. 576px.
  4. 616px.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een blok van 500px breed heeft geen binnenruimte of rand. Het kindelement heeft geen binnenruimte of rand en is een gewoon blok met width: 320px; margin: 0 auto; text-align: center;. Welke horizontale marges en tekstuitlijning ontstaan?
  1. 180px aan elke kant; gecentreerde tekst.
  2. 90px aan elke kant; tekst uitgelijnd aan de beginkant.
  3. Geen zijmarges; gecentreerde tekst.
  4. 90px aan elke kant; gecentreerde tekst.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een weblettertype wordt gedeclareerd met @font-face { font-family: "Lumen Sans"; src: url("fonts/lumen-regular.woff2") format("woff2"); }. Welke naam moet een lettertypelijst gebruiken om deze lettertypevariant op te vragen?
  1. "Lumen Sans"
  2. "lumen-regular"
  3. "lumen-regular.woff2"
  4. "fonts/lumen-regular.woff2"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Linkregels met gelijke specificiteit stellen eerst a:hover { color: teal; } en daarna a:visited { color: purple; } in. De aanwijzer staat boven een bezochte link. Welke wijziging maakt de kleur bij aanwijzen blauwgroen en behoudt paars voor de bezochte link wanneer die niet wordt aangewezen?
  1. Plaats de bezoekregel na de aanwijzingsregel.
  2. Stel paars in op het ouderelement van de link.
  3. Plaats de aanwijzingsregel na de bezoekregel.
  4. Vervang :hover door :active in de eerste regel.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een pagina op /site/index.html linkt naar /site/css/main.css. Die CSS gebruikt background-image: url("images/banner.jpg");, maar de afbeelding is /site/images/banner.jpg. Een latere regel stelt ook background: navy; in. Welke correctie behoudt marineblauw achter de afbeelding?
  1. Verander alleen de URL in ../images/banner.jpg en behoud de bestaande volgorde.
  2. Verander alleen de verkorte eigenschap in background-color: navy en behoud de bestaande URL.
  3. Schrijf background: navy; vóór background-image: url("images/banner.jpg");.
  4. Schrijf background: navy; vóór background-image: url("../images/banner.jpg");.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een rechthoekige box meet 160px bij 80px en heeft border-radius: 50%. Welke afgeronde vorm krijgt de achtergrond?
  1. Een cirkel.
  2. Een ellips.
  3. Een afgerond vierkant.
  4. Een pilvorm met rechte zijranden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

84 Kernbegrippen, elk met een definitie

A

achtergrondafbeelding
Een achtergrondafbeelding is een decoratieve afbeelding die achter de inhoud van een box en boven de achtergrondkleur wordt getekend, met instelbare grootte en herhaling.
Een CSS-foto kan niet laden terwijl de box zijn terugvalkleur behoudt en de tekst in het document blijft.
achtergrondlaag
Een achtergrondlaag is één afbeelding in een door komma's gescheiden lijst met achtergronden, waarbij de eerstgenoemde afbeelding boven de latere wordt getekend.
Een kleur onder alle afbeeldingslagen kan zichtbaar blijven door transparante delen en onbedekte ruimtes.
afmetingen van de achtergrondafbeelding
De afmetingen van de achtergrondafbeelding bepalen hoe groot de afbeelding wordt weergegeven, waarbij cover en contain de verhoudingen van de afbeelding behouden.
Cover kan de boven- en onderkant van een vierkante foto in een brede box afsnijden; contain kan ruimte ernaast overlaten.
afstammeling
Een afstammeling is een element dat ergens binnen een ander element is genest, rechtstreeks of via één of meer tussengelegen elementen.
De selector nav a bereikt een navigatielink ook wanneer een lijst en een lijstitem tussen de link en de nav staan.
afstand van de omtreklijn tot de rand
De afstand van de omtreklijn tot de rand stelt de ruimte tussen de omtreklijn en de rand van een element in en verandert de getekende aanwijzing zonder de boxafmetingen te wijzigen.
Een afstand van 2px scheidt een focusomtreklijn van de rand van een link, zodat de twee lijnen visueel te onderscheiden blijven.
alfawaarde
De alfawaarde is het onderdeel voor ondoorzichtigheid van een kleurwaarde en loopt van volledig transparant bij nul tot volledig ondoorzichtig bij één of 100%.
Een achtergrond met halve alfawaarde kan een foto erachter zichtbaar maken terwijl de tekst van het element volledig ondoorzichtig blijft.
attribuutselector
Een attribuutselector selecteert een element op de aanwezigheid van een attribuut of op een voorwaarde voor de waarde ervan, met syntaxis tussen vierkante haken.
De selector a[href$=".pdf" i] kan documentlinks vormgeven, ook wanneer de bestandsuitgang in hoofdletters staat.
automatische marge
Een automatische horizontale marge neemt overgebleven ruimte naast een blok op, zodat gelijke automatische zijmarges een smallere box kunnen centreren.
Een blok dat zijn container al vult, kan niet zichtbaar verschuiven wanneer beide zijmarges op auto worden ingesteld.

B

berekende waarde
Een berekende waarde is een eigenschapswaarde nadat de browser de cascade en berekeningsregels heeft toegepast, maar voordat sommige waarden die van de lay-out afhangen verder worden bepaald.
Ontwikkelaarstools kunnen tonen dat een lettergrootte in em pixels wordt, terwijl een breedtepercentage van de lay-out afhangt.
berekening van boxafmetingen
De berekening van boxafmetingen bepaalt of een opgegeven breedte of hoogte alleen het inhoudsgebied meet of ook binnenruimte en rand omvat.
Door een kaart op volle breedte met binnenruimte over te schakelen op border-box kan de buitenbreedte weer in de container passen.
binnenruimte
Binnenruimte is de ruimte tussen de inhoud van een box en de rand, die de achtergrond van de box draagt en bijdraagt aan de afmetingen.
Als je de binnenruimte van een kaart vergroot, ontstaat gekleurde ruimte rond de tekst in plaats van een transparante ruimte buiten de kaart.
blokbox
Een blokbox begint normaal op een nieuwe regel, accepteert afmetingen en vult de beschikbare breedte van zijn container wanneer de breedte auto is.
Een alinea kan een maximumbreedte en automatische zijmarges gebruiken terwijl de tekst erin links uitgelijnd blijft.
boxschaduw
Een boxschaduw tekent een buitenste of binnenste schaduw met verschuivingen, optionele vervaging en spreiding en een kleur, zonder ruimte aan het boxmodel toe te voegen.
Een kaart kan een zachte schaduw krijgen en dezelfde berekende breedte inclusief rand en positie tussen aangrenzende elementen behouden.
bronvolgorde
Bronvolgorde is de volgorde waarin CSS-declaraties worden aangetroffen en beslist een conflict pas nadat eerdere cascadevergelijkingen gelijk zijn geëindigd.
Bij twee identieke klasseselectors die kleur instellen in één laag wint de latere declaratie.
browserstijlblad
Een browserstijlblad is de ingebouwde verzameling CSS-regels van de browser die HTML-elementen hun standaarduiterlijk geeft.
Grote koppen en ingesprongen lijsten verschijnen op een gewone HTML-pagina voordat een auteur een stijlblad toevoegt.

C

calc-functie
De functie calc() combineert verenigbare CSS-waarden in een uitdrukking, zodat een lengte relatieve en absolute hoeveelheden kan mengen.
De waarde calc(100% - 40px) trekt een vaste hoeveelheid af van een breedte relatief aan de container, met spaties rond het minteken.
cascade
De cascade is het geordende proces dat voor elke eigenschap op elk element een winnende declaratie kiest wanneer CSS-regels concurreren.
Een alinea kan haar kleur uit een klasseregel en haar lettergrootte uit een afzonderlijke regel met een typeselector krijgen.
cascadelaag
Een cascadelaag is een benoemde groep regels met een expliciete voorrang ten opzichte van andere lagen, die vóór selectorspecificiteit wordt vergeleken.
Een normale klasse in een componentlaag kan winnen van een basislaagregel met een ID als de componentlaag later komt.
ch-eenheid
Een ch is een lengte relatief aan het lettertype, gebaseerd op de voorschuifbreedte van het nulteken en vaak gebruikt om de breedte van tekstkolommen te beperken.
Een alinea met max-width: 65ch volgt de lettergrootte zonder precies 65 letters per regel te beloven.
combinator voor het direct volgende zusterelement
De combinator voor het direct volgende zusterelement, +, selecteert een overeenkomend element direct na een ander element wanneer beide hetzelfde ouderelement hebben.
De selector h2 + p bereikt een openingsalinea, maar komt niet meer overeen als er een aside tussen staat.
combinator voor volgende zusterelementen
De combinator voor volgende zusterelementen, ~, selecteert overeenkomende latere zusterelementen van een element en staat andere zusterelementen ertussen toe.
De selector h2 ~ p kan twee alinea's bereiken met een aside ertussen wanneer ze allemaal hetzelfde ouderelement als de kop hebben.
contrastverhouding
Een contrastverhouding vergelijkt de relatieve luminantie van voorgrond- en achtergrondkleuren om hun zichtbare licht-donkerverschil te meten.
Tekst met een contrast van 2,85:1 voldoet aan geen van de minimale WCAG AA-drempels voor normale en grote tekst.
CSS
CSS is een taal die de vormgeving van HTML-elementen beschrijft, waaronder hun kleuren, lettertypen, tussenruimte, randen en achtergronden.
Een pagina kan dezelfde koppenstructuur behouden terwijl een ander stijlblad de kleuren en lettertypen verandert.
CSS-pixel
Een CSS-pixel is een absolute referentielengte voor de vormgeving van pagina's die op een scherm met hoge pixeldichtheid met meerdere fysieke pixels kan overeenkomen.
Een lettertype van 16px kan ongeveer dezelfde bedoelde grootte behouden, ook als twee schermen een verschillende apparaatpixeldichtheid hebben.
CSS-reset
Een CSS-reset is een verzameling CSS-regels die geselecteerde browserstandaarden verwijdert, zodat een ontwerp eigen consistente beginstijlen kan vastleggen.
Een regel die alle binnenruimte verwijdert, verwijdert ook de inspringing van lijsten, die het ontwerp mogelijk moet herstellen.

D

declaratie
Een declaratie bestaat uit een CSS-eigenschap en een waarde, verbonden door een dubbele punt, en stelt binnen een regel één onderdeel van het uiterlijk van een element in.
In color: navy; stelt de declaratie de tekstkleur in en scheidt de puntkomma die van de volgende instelling.
declaratie met !important
Een declaratie met !important is een CSS-declaratie die met !important is gemarkeerd en daardoor voorrang krijgt op normale declaraties met dezelfde herkomst.
Een belangrijke auteurskleur kan van een normale inline kleur winnen, zelfs als de stijlbladselector slechts p is.

E

em-eenheid
Een em is een lengte relatief aan de lettergrootte: voor font-size gebruikt die de lettergrootte van het ouderelement en bij andere eigenschappen die van het element zelf.
Nadat voor de tekst van een kindelement 20px is berekend, wordt de binnenruimte van 2em 40px in plaats van opnieuw het ouderelement te volgen.

G

gegenereerde inhoud
Gegenereerde inhoud is tekst of een decoratieve box die door CSS-pseudo-elementen wordt gemaakt in plaats van als HTML-inhoudsknooppunt te worden geschreven.
Een sterretje dat met ::after wordt toegevoegd, heeft een content-waarde nodig; essentiële instructies blijven in de HTML.
generieke lettertypefamilie
Een generieke lettertypefamilie benoemt een brede lettertypecategorie waarop de browser kan terugvallen, zoals serif, sans-serif, monospace of system-ui.
Als je sans-serif tussen aanhalingstekens zet, wordt het een letterlijke lettertypenaam en verliest het zijn rol als generieke terugvaloptie van de lijst.

H

hexadecimale kleur
Een hexadecimale kleur noteert rode, groene en blauwe kanaalwaarden in het talstelsel met grondtal 16, met een optioneel extra paar voor de transparantie van de kleur.
Uitbreiding van #3ac geeft #33aacc omdat elk cijfer een herhaald paar voor zijn eigen kanaal wordt.
hoekafronding
Een hoekafronding rondt de hoeken van een box af zonder de afmetingen te vergroten, met waarden die per hoek kunnen verschillen.
Een hoekafronding van 50% maakt een vierkante box rond, terwijl dezelfde waarde op een rechthoek een ellips oplevert.
HSL-kleur
Een HSL-kleur beschrijft de kleurtoon als een hoek samen met verzadiging en lichtheid in percentages en biedt zo een andere notatie voor een kleur.
Door de kleurtoon gelijk te houden en de lichtheid te verhogen kun je van donkerblauw een bleke versie van dat blauw maken.
huidige tekstkleur
Het sleutelwoord currentColor vertegenwoordigt de eigen tekstkleur van het element wanneer een andere eigenschap met een kleurwaarde een bijpassende waarde nodig heeft.
Een rand met currentColor verandert mee met de tekstkleur wanneer een regel voor aanwijzen alleen color bijwerkt.

I

ID-selector
Een ID-selector komt overeen met de unieke ID van een element en draagt meer specificiteit bij dan klasseselectors in een concurrerende regel.
Een selector met #site-header kan later moeilijker te overschrijven zijn dan een selector met een herbruikbare headerklasse.
inhoudsgebied
Het inhoudsgebied is het binnenste deel van de box van een element dat de tekst, afbeelding of inhoud van kindelementen bevat, binnen de binnenruimte en rand.
Een content-boxbreedte van 300px laat alle 300px over voor inhoud voordat binnenruimte aan de buitenafmetingen wordt toegevoegd.
inline-blockbox
Een inline-blockbox staat in een tekstregel, accepteert expliciete afmetingen en reserveert verticale ruimte voor de tussenruimte van de box.
Een navigatielink kan aanklikbare ruimte met binnenruimte krijgen zonder elke link op een afzonderlijke regel te dwingen.
inlinebox
Een gewone inlinebox loopt mee binnen een tekstregel en ontleent zijn breedte aan de inhoud, waarbij expliciete breedte en hoogte worden genegeerd.
Een span wordt niet 200px breed alleen omdat een regel width: 200px toewijst terwijl de span inline blijft.

K

kindelement
Een kindelement is een element dat rechtstreeks binnen een ouderelement is genest, zonder ander element ertussen in de HTML-boom.
De selector .menu > li laat items weg waarvan het ouderelement een afzonderlijke geneste lijst binnen het menu is.
klasseselector
Een klasseselector komt overeen met elementen waarvan het class-attribuut met spaties als scheiding het genoemde woord bevat, waardoor de stijl herbruikbaar is.
De selector .notice komt overeen met zowel een gewone melding als een element met class="card notice".
kleurverloop
Een kleurverloop is een door de browser gegenereerde afbeelding waarin kleuren langs een lijn of vanuit een middelpunt veranderen en die als afbeeldingswaarde wordt gebruikt.
Een halfdoorzichtig kleurverloop dat vóór een foto wordt genoemd, kan die foto donkerder maken zonder opacity op de bovenliggende tekst toe te passen.

L

lettertypelijst
Een lettertypelijst is een geordende lijst van lettertypefamilies, waarmee de browser op een andere familie kan terugvallen als een voorkeursfamilie niet beschikbaar is.
Een lijst die eindigt met sans-serif zonder aanhalingstekens geeft ook op een apparaat zonder de benoemde lettertypen een geschikt lettertype.
lijstmarkering
Een lijstmarkering is het opsommingsteken, nummer of een andere indicator bij een lijstitem, vormgegeven met lijsteigenschappen of ::marker.
Als je een markering in een vierkant verandert, verwijdert dat niet de afzonderlijke standaardinspringing van de lijstcontainer.
linktoestand
Een linktoestand is een selectievoorwaarde zoals niet bezocht, bezocht, met focus, aangewezen of actief, waarmee een link voor vormgeving kan worden geselecteerd.
Een bezochte link kan ook worden aangewezen, dus de volgorde van kleurregels met gelijke specificiteit beïnvloedt het uiterlijk.

M

marge
Een marge is transparante ruimte buiten de rand van een box, bedoeld om die van aangrenzende boxen te scheiden en niet inbegrepen in de opgegeven breedte.
Een achtergrond kan de ruimte die een marge maakt niet kleuren, dus voor gekleurde ruimte binnen een box is binnenruimte nodig.

O

omtreklijn
Een omtreklijn is een lijn die buiten de rand van een box wordt getekend zonder extra ruimte in de lay-out te reserveren en vaak wordt gebruikt om toetsenbordfocus aan te geven.
Een link kan een focusomtreklijn van 3px krijgen zonder tekst in de buurt weg te duwen, zoals een grotere rand volgens content-box wel zou doen.
omzetting van hoofdletters en kleine letters
Omzetting van hoofdletters en kleine letters verandert via CSS hoe tekst wordt weergegeven, zonder de tekst in de HTML te herschrijven.
Een label in hoofdletters kan afkomstig zijn van HTML met normaal gebruik van hoofdletters, waardoor de oorspronkelijke tekst in het document behouden blijft.
overerving
Overerving is het proces waarbij een element de waarde van zijn ouderelement voor een overgeërfde eigenschap ontvangt wanneer geen lokale waarde die vervangt.
De lettertypefamilie van een body kan gewone alinea's bereiken zonder een extra lettertypedeclaratie op elke alinea.
overlopende inhoud
Overlopende inhoud is inhoud die buiten de toegestane afmetingen van een box komt en wordt geregeld met waarden zoals visible, hidden, scroll en auto.
Een codeblok met overflow: auto kan zijn lange regel laten scrollen zonder de hele pagina breder te maken.

P

percentage
Een CSS-percentage drukt een verhouding uit ten opzichte van een referentie die door de eigenschap wordt bepaald, zoals de containerbreedte of de lettergrootte van het ouderelement.
Een binnenruimte bovenaan van 10% in een container van 500px breed gebruikt die breedte en wordt berekend als 50px, ongeacht de hoogte.
positie van de achtergrondafbeelding
De positie van de achtergrondafbeelding plaatst een afbeelding binnen het achtergrondgebied met sleutelwoorden, lengtes of percentages, met de horizontale positie eerst.
Een gecentreerde coverafbeelding verdeelt noodzakelijk afsnijden rond het midden in plaats van alleen de linkerbovenhoek te behouden.
pseudo-element
Een pseudo-element selecteert een deel van een element of maakt een gegenereerd deel om vorm te geven en wordt volgens de conventie met twee dubbele punten geschreven.
Een regel voor li::marker kan opsommingstekens kleuren terwijl de tekst van het lijstitem zijn bestaande kleur behoudt.
pseudoklasse
Een pseudoklasse is een selectorvoorwaarde die overeenkomt met een toestand of structurele positie van een element en met één dubbele punt wordt geschreven.
De pseudoklasse :checked kan een selectievakje selecteren waarvan de huidige aangevinkte toestand niet door een klasse wordt weergegeven.

R

rand
Een rand is de vormgegeven begrenzing rond de binnenruimte van een box, met een breedte, stijl en kleur die meetellen bij de berekening van boxafmetingen.
Twee zijranden van 2px voegen 4px toe aan de content-boxbreedte van een kaart, ook als rond die kaart een zachte schaduw wordt getekend.
regelhoogte
Regelhoogte stelt de hoogte in die voor een tekstregel wordt gebruikt; een waarde zonder eenheid werkt als vermenigvuldigingsfactor van de eigen lettergrootte van het element.
Bij tekst van 20px geeft een regelhoogte zonder eenheid van 1,5 regels van 30px en kan die passend meegroeien voor grotere kindelementen.
rem-eenheid
Een rem is een lengte relatief aan de lettergrootte van het hoofdelement en biedt een gedeelde referentie voor geneste elementen op de pagina.
Meerdere geneste items op 1.25rem behouden dezelfde tekstgrootte wanneer ze een ongewijzigde grootte van het hoofdelement delen.
RGB-kleur
Een RGB-kleur specificeert de hoeveelheden rood, groen en blauw licht, meestal als kanaalgetallen van 0 tot 255 in rgb().
De waarde rgb(30 144 255) geeft dezelfde kanaalhoeveelheden als de hexadecimale waarde #1e90ff met zes cijfers.

S

samengestelde selector
Een samengestelde selector combineert selectievoorwaarden zonder combinator en vereist dat één element aan al die voorwaarden voldoet.
De selector p.note bereikt een alinea met de klasse note, terwijl p .note om een afstammeling vraagt.
samenvallende marges
Bij samenvallende marges worden bepaalde aangrenzende verticale blokmarges gecombineerd tot één marge, met de grootste positieve en de meest negatieve waarde.
Aangrenzende positieve samenvallende marges van 18px en 30px maken een tussenruimte van 30px, terwijl horizontale marges afzonderlijk blijven.
selector met specificiteit nul
Een selector met specificiteit nul draagt geen gewicht bij aan een selectorvergelijking; :where() verwijdert ook het gewicht van zijn argumenten.
De selector :where(#main) p blijft gemakkelijk te overschrijven omdat alleen de alinea een typepunt bijdraagt.
selectorlijst
Een selectorlijst is een door komma's gescheiden groep selectors die een declaratieblok delen en onafhankelijk van elkaar met elementen overeenkomen.
De regel voor h1, h2, h3 kan alle drie de kopniveaus één lettertypefamilie geven zonder nesting te vereisen.
sleutelwoord inherit
Het sleutelwoord inherit geeft een eigenschap expliciet de berekende waarde van het ouderelement, ook wanneer die eigenschap normaal niet overerft.
Als je font: inherit op bedieningselementen instelt, kan hun door de browser toegewezen lettertype worden vervangen door dat van de omringende tekst.
sleutelwoord initial
Het sleutelwoord initial selecteert de beginwaarde van een eigenschap uit de CSS-specificatie, onafhankelijk van de standaardregel voor het HTML-element.
Als je display: initial op een div toepast, krijgt die inlineweergave, ook al maakt de browser er normaal een blok van.
sleutelwoord revert
Het sleutelwoord revert draait een eigenschap terug voorbij de huidige stijlherkomst, zodat een toepasselijke waarde uit een lagere herkomst zichtbaar wordt.
Een auteursregel met display: revert kan de normale, door de browser toegewezen blockweergave van een div herstellen.
sleutelwoord revert-layer
Het sleutelwoord revert-layer draait de waarde van een eigenschap terug voorbij de huidige cascadelaag, zodat een bron met lagere voorrang die kan leveren.
Een componentlaag kan haar kleurinstelling loslaten en de overeenkomende kleur uit een eerdere basislaag weer laten verschijnen.
sleutelwoord unset
Het sleutelwoord unset volgt de normale overerving voor een overgeërfde eigenschap en gebruikt de beginwaarde voor een niet-overgeërfde eigenschap.
Als je unset op color gebruikt, kan de tekstkleur van een ouderelement behouden blijven, terwijl gebruik op margin een lokale marge verwijdert.
specificiteit
Specificiteit is het gewicht ID-CLASS-TYPE van een selector, waarmee concurrerende declaraties worden vergeleken nadat hun eerdere cascadevoorrangen gelijk zijn geëindigd.
Een ID-selector kan van veel klassen in dezelfde voorrangsgroep winnen omdat de ID-kolom eerst wordt vergeleken.
specificiteitsdrietal ID-CLASS-TYPE
Een specificiteitsdrietal ID-CLASS-TYPE legt aantallen ID's, klasseachtige selectors en typeachtige selectors vast in drie afzonderlijk vergeleken kolommen.
De selector a[href]:hover heeft het drietal 0-2-1, waarbij het attribuut en hover als CLASS worden geteld.
standaardmodus
De standaardmodus is de documentweergavemodus van de browser die moderne webstandaarden volgt en door een geldige HTML-doctype wordt geselecteerd.
Door <!DOCTYPE html> vooraan te plaatsen voorkom je verouderd gedrag dat een pagina in quirksmodus kan beïnvloeden.
stijlblad
Een stijlblad is een verzameling CSS-regels die een browser op een document toepast, vaak opgeslagen in een afzonderlijk bestand dat meerdere pagina's delen.
Met een HTML-link naar css/styles.css kan een pagina haar vormgeving laden uit het bestand in de naastliggende map.
stijlenpaneel
Het stijlenpaneel is een weergave in de ontwikkelaarstools van de regels die overeenkomen met een geselecteerd element, inclusief declaraties die in de cascade verliezen.
Een doorgestreepte kleur in het stijlenpaneel helpt verklaren waarom een alinea de waarde van een andere regel weergeeft.
stijlherkomst
Stijlherkomst geeft aan of CSS van de auteur, de lezer of de browser komt en vormt een stap in de voorrang van de cascade.
Een normale auteursregel kan de standaardkopgrootte van de browser vervangen zonder hetzelfde selectorgewicht te hebben.
structurele pseudoklasse
Een structurele pseudoklasse selecteert elementen op basis van hun positie tussen zusterelementen, zoals het eerste kindelement of elk tweede kindelement.
Een alinea na een kop is de eerste alinea, maar komt niet overeen met p:first-child.

T

tekstdecoratie
Tekstdecoratie tekent lijnen zoals een onderstreping of doorhaling op tekst, met optionele instellingen voor stijl, kleur en dikte.
Een link kan een onderstreping als herkenbare aanwijzing behouden terwijl een regel voor aanwijzen alleen de dikte van de lijn verhoogt.
tekstuitlijning
Tekstuitlijning plaatst de inline-inhoud van een blok binnen de beschikbare regelruimte, met keuzes zoals start, end, center en justify.
Als je de tekst binnen een alinea op volle breedte centreert, wordt de alineabox niet smaller en verplaatsen de randen ervan niet.
toestand voor zichtbare focus
De toestand voor zichtbare focus komt overeen met een element met focus wanneer de browser bepaalt dat de lezer een zichtbare focusindicator nodig heeft.
Een toetsenbordgebruiker kan een omtreklijn zien rond de link die door a:focus-visible is geselecteerd voordat de link wordt geactiveerd.
typeselector
Een typeselector komt overeen met elementen op basis van hun HTML-naam, zodat een CSS-regel op elk element van een gekozen soort kan worden toegepast.
De selector p kan de tussenruimte van alinea's op de hele pagina vastleggen zonder elke alinea een klasse te geven.

U

universele selector
De universele selector, *, komt overeen met elk element maar draagt nul specificiteit bij, waardoor die nuttig is voor brede standaardstijlen en CSS-resets.
Een regel voor * kan marges terugzetten, waarna een klasseselector met grotere specificiteit tussenruimte kan toevoegen.

V

variabel lettertype
Een variabel lettertype bewaart een reeks lettertypevariaties, zoals gewichten, in één bestand in plaats van één statisch bestand per lettertypevariant nodig te hebben.
Eén bestand met een variabel lettertype kan meerdere gevraagde gewichten leveren als het gedeclareerde bereik die omvat.
verkorte eigenschap
Een verkorte eigenschap stelt meerdere verwante CSS-eigenschappen tegelijk in en zet de bijbehorende afzonderlijke eigenschappen terug die niet in de waarde zijn opgegeven.
Als je background: white; schrijft, kan een foto verdwijnen die eerder via background-image is toegewezen.
viewporteenheid
Een viewporteenheid meet een deel van de viewport van de browser, waarbij vw de breedte en vh de hoogte als referentie gebruikt.
Een waarde van 10vh is 80px wanneer de viewporthoogte 800 CSS-pixels is, ook binnen een lagere container.

W

weblettertype
Een weblettertype is een lettertypebron die voor gebruik op een pagina wordt gedownload, zodat een ontwerp een lettertypevariant kan bieden die niet op het apparaat van de lezer is geïnstalleerd.
Een pagina kan eerst een terugvallettertype tonen en daarna het gekozen weblettertype weergeven wanneer het WOFF2-bestand is geladen.

Z

zusterelement
Een zusterelement is een element dat hetzelfde ouderelement heeft als een ander element; zusterelementcombinators gebruiken hun volgorde in de HTML-boom.
Een alinea binnen een aside is geen zusterelement van een kop buiten de aside, ook al lijken ze naast elkaar te staan.

#

@font-face-regel
Een @font-face-regel wijst een CSS-familienaam en kenmerken van een lettertypevariant toe aan een lettertypebestand dat in een lettertypelijst kan worden gebruikt.
De familiedeclaratie moet overeenkomen met de naam die in de regel is gekozen, niet met de bestandsnaam in de bron-URL.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag