- Leren
- Informatica & ICT
- Programmeren
- HTML en CSS: responsieve, toegankelijke websites bouwen
- Webpagina's vormgeven met CSS
Webpagina's vormgeven met CSS: cascade en boxmodel
BeginnerLes 4 van 8 in Cursus HTML en CSS: responsieve, toegankelijke websites bouwen
Wat je leert
- 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 paginaLees 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 dieHerken 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.
- Schrijf CSS-regels en koppel een stijlblad aan een pagina
- Selecteer precies de bedoelde elementen met type-, klasse- en ID-selectors, attribuutselectors, pseudoklassen, pseudo-elementen en combinators.
- Selecteer elementen op type, klasse en IDSelecteer 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 elementenGebruik 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 paginaSelecteer 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.
- Selecteer elementen op type, klasse en ID
- 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 krijgtPas de stappen van de cascade toe (herkomst en belang, specificiteit en vervolgens volgorde van voorkomen) en gebruik inline stijlen,
!importanten cascadelagen zorgvuldig. - Bereken en vergelijk specificiteitBepaal 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 sleutelwoordenWeet welke eigenschappen van ouderelement op kindelement overgaan, gebruik overerving om minder CSS te schrijven en stuur die aan met
inherit,initial,unsetenrevert.
- Volg de cascade om te bepalen welke declaratie voorrang krijgt
- 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()enhsl(), voeg transparantie toe en controleer of tekst voldoende contrasteert met de achtergrond. - Kies lengtes en eenhedenGebruik pixels,
em,rem, percentages en viewporteenheden correct, weet waartegen elke relatieve eenheid wordt afgemeten en combineer eenheden metcalc().
- Noteer kleuren met sleutelwoorden, hexadecimale notatie, rgb() en hsl()
- 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 margeBenoem 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 inlineboxenVoorspel hoe blokboxen, inlineboxen en inline-blockboxen ruimte innemen, centreer een blok met automatische marges en herken wanneer verticale marges samenvallen.
- Bereken boxafmetingen op basis van inhoud, binnenruimte, rand en marge
- 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 weblettertypenSchrijf lettertypelijsten met terugvalopties, stel grootte, gewicht en stijl in, gebruik de verkorte eigenschap
fonten laad een aangepast lettertype met@font-face. - Geef tekst, lijsten en links een goed leesbare vormgevingStel 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 toeVul 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 schaduwenSchrijf verkorte randeigenschappen voor alle kanten of afzonderlijke kanten, rond hoeken af met
border-radiusen voeg omtreklijnen en schaduwen toe zonder de lay-out te veranderen.
- Kies lettertypen en laad weblettertypen
Webpagina's vormgeven met CSS: uitleg
1Koppel 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.
2Selecteer 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
| Selector | Komt overeen met |
|---|---|
p | Elke alinea |
.warning | Elk element met de klasse warning |
#site-header | Het 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.introvereist beide voorwaarden op één element;p .introbeschrijft 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.
| Patroon | Betekenis |
|---|---|
[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-childtelt alle zusterelementen, terwijl:first-of-typehetzelfde elementtype telt.- Linktoestanden kunnen overlappen, dus concurrerende toestandregels hebben een bewuste volgorde nodig.
::beforeen::afterhebbencontentnodig; 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
| Combinator | Voorbeeld | Doelelement |
|---|---|---|
| Spatie | nav a | Elke link ergens binnen een nav |
> | .menu > li | Een li direct binnen .menu |
+ | h2 + p | Een alinea direct na een h2, met hetzelfde ouderelement |
~ | h2 ~ p | Elke 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.
3Bepaal 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 declaraties | Voorrang |
|---|---|
| Auteur: de CSS van de website | Hoogste van deze drie |
| Gebruiker: aangepaste stijlen van een lezer | Tussen auteur en browser |
| Browser: standaardstijlen van de browser | Laagste |
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.
!importantverandert 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.
| Kolom | Tel elk van deze onderdelen |
|---|---|
| ID | ID-selectors zoals #menu |
| CLASS | Klassen, attribuutselectors en gewone pseudoklassen |
| TYPE | Typeselectors 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
| Sleutelwoord | Effect |
|---|---|
inherit | Neem de berekende waarde van het ouderelement over |
initial | Gebruik de beginwaarde van de CSS-eigenschap |
unset | Erf een overgeërfde eigenschap; gebruik de beginwaarde voor een niet-overgeërfde eigenschap |
revert | Draai de stijlen van de huidige herkomst terug |
revert-layer | Draai 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.
initialbetekent de CSS-beginwaarde;revertkan standaardwaarden van de browser voor elementen herstellen.unsetkiest afhankelijk van de eigenschap voor overerving of de beginwaarde.revert-layerverwijdert de huidige laag uit de beslissing over die eigenschap.- Een onderstreping van een ouderelement wordt doorgetrokken onder inline-afstammelingen zonder te worden overgeërfd.
4Noteer 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, terwijlhsl()kleurtoon, verzadiging en lichtheid geeft.- De alfawaarde in een achtergrondkleur beïnvloedt die kleur;
opacityvervaagt het hele element. currentColorvolgt 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
| Eenheid | Referentie |
|---|---|
px | Een CSS-referentiepixel |
em in font-size | De lettergrootte van het ouderelement |
em in tussenruimte en andere lengtes | De eigen lettergrootte van het element |
rem | De lettergrootte van het hoofdelement |
% | Een referentie die door de eigenschap wordt bepaald |
vw, vh | Breedte of hoogte van de viewport |
ch | De 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.
emgebruikt het ouderelement voor de lettergrootte en het element zelf voor andere lengtes.remvolgt 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;
chvolgt het lettertype. - Gebruik spaties rond optelling en aftrekking binnen
calc().
5Meet 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:
| Waarden | Ingestelde kanten |
|---|---|
10px | Alle vier |
10px 20px | Boven en onder, dan links en rechts |
10px 20px 30px | Boven, links en rechts, onder |
10px 20px 30px 40px | Boven, 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.
overflowbepaalt 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
| Weergave | Breedte en hoogte | Gedrag van tussenruimte |
|---|---|---|
block | Van toepassing | Marges en binnenruimte scheiden boxen |
Gewone inline | Bepalen de boxafmetingen niet | Horizontale tussenruimte beïnvloedt tekst in de buurt |
inline-block | Van toepassing | Verticale 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-aligncentreert 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: noneverwijdert ruimte;visibility: hiddenbehoudt die.
6Geef 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
fontvereist grootte en familie en zet weggelaten instellingen terug. @font-facedefinieert een familienaam en het bestand dat die familie levert.font-display: swaphoudt 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-alignverplaatst 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.
| Grootte | Resultaat |
|---|---|
cover | Vul de hele box met behoud van verhoudingen; delen kunnen worden afgesneden |
contain | Laat de hele afbeelding passen met behoud van verhoudingen; er kunnen lege ruimtes overblijven |
200px 100px | Stel beide afmetingen expliciet in |
50% auto | Stel 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.
covervult de box en kan afsnijden;containlaat 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
solidnodig. - 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
1Laat een stijlblad werken en inspecteer het
10 stappen
- 1IntroductieVan 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.
- 2VoorbeeldKoppel een extern bestand
Stel dat
index.htmlnaast een map met de naamcssstaat, diestyles.cssbevat. 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.
- 3UitlegSchrijf en lees één regel
Zet dit in het gekoppelde stijlblad:
p { color: navy; font-size: 18px; }pselecteert 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. - 4UitdagingHerstel 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. - 5KernpuntZie 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.
- 6VerbandBehoud 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. - 7TipInspecteer 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.
- 8UitdagingVerklaar 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. - 9UitdagingVolg 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 bestandcss/styles.cssis. 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. - 10SamenvattingEen 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.
2Lees selectors aan de hand van de HTML-boom
12 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieBeschrijf de bedoelde selectie
- 2VoorbeeldHergebruik één klasse op meerdere elementen
- 3UitdagingEen spatie verandert het doelelement
- 4TipDeel regels zonder nesting te vereisen
- 5UitlegSelecteer op attributen en huidige toestanden
- 6VoorbeeldTel zusterelementen, niet alleen alinea's
- 7UitdagingKies een markering zonder tekst te vervangen
- 8UitlegZoek directe kindelementen in een geneste lijst
- 9VoorbeeldVolg de twee relaties tussen zusterelementen
- 10UitdagingHoud hetzelfde ouderelement in beeld
- 11UitdagingCombineer locatie met toestand
- 12SamenvattingLees de selector als een selectietest
3Volg een conflict van voorrang tot overerving
13 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieEén element kan meerdere winnaars hebben
- 2UitlegFilter voordat je vergelijkt
- 3VoorbeeldBepaal welke inline kleur wint
- 4KernpuntGebruik lagen voordat je sterkere selectors gebruikt
- 5UitdagingBenoem de beslissende stap
- 6VoorbeeldTel selectoronderdelen per kolom
- 7UitlegBehandel functionele selectors
- 8UitdagingVergelijk zonder kolommen op te tellen
- 9VerbandLaat tekst overerven en houd boxen gescheiden
- 10UitlegKies hoe je wilt terugzetten
- 11UitdagingOnderscheid een kindelement van de selector van zijn ouderelement
- 12UitdagingVolg de volledige beslissing
- 13SamenvattingGeef elke beslissing een eigen taak
4Kies een kleur en bereken een relatieve grootte
10 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieLees de referentie achter de waarde
- 2VoorbeeldOntcijfer drie kleurkanalen
- 3KernpuntHoud tekst ondoorzichtig boven een halfdoorzichtige vulling
- 4UitdagingControleer de juiste drempel
- 5VoorbeeldBereken de tekstgrootte vóór de tussenruimte
- 6VerbandVoorkom herhaalde groei in geneste tekst
- 7UitlegGeef percentages de juiste referentie
- 8UitdagingPas twee verschillende referenties toe
- 9UitdagingVerbind lettergrootte met contrast
- 10SamenvattingKies wat de waarde moet volgen
5Meet een kaart en verklaar de tussenruimtes
11 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieBegin bij de inhoud en werk naar buiten
- 2UitlegBenoem de vier lagen
- 3VoorbeeldBereken een kaart volgens content-box
- 4VoorbeeldVerander wat de breedte omvat
- 5UitdagingVerhelp overloop bij volle breedte
- 6VerbandLaat een link afmetingen accepteren
- 7VoorbeeldVerdeel de resterende horizontale ruimte
- 8KernpuntCombineer verticale marges
- 9UitdagingVoorspel een tussenruimte met verschillende tekens
- 10UitdagingBereken de gecentreerde kaart opnieuw
- 11SamenvattingMeet de laag die het probleem veroorzaakt
6Maak leesbare tekst en een afgewerkte kaart
15 stappen
Sla deze les op om elke Walkthrough stap voor stap te volgen.
- 1IntroductieGeef elke visuele keuze een doel
- 2UitlegKies een betrouwbare lettertypelijst
- 3VoorbeeldLaad een lettertypevariant en houd tekst zichtbaar
- 4UitdagingHerken het terugzetten door een verkorte font-eigenschap
- 5VoorbeeldHoud de regelafstand evenredig
- 6TipHoud menu's en links begrijpelijk
- 7UitdagingMaak onderscheid tussen het blok en de inhoud
- 8VoorbeeldVolg een achtergrondpad
- 9VoorbeeldSchaal een vierkante foto in een brede box
- 10KernpuntPlaats een tint als laag boven een foto
- 11UitdagingHoud de volledige foto zichtbaar
- 12UitlegTeken een rand zonder aangrenzende elementen te verplaatsen
- 13UitdagingRond de box af en behoud de afmeting
- 14UitdagingWerk een stabiele interactieve kaart af
- 15SamenvattingVerbind decoratie met de onderliggende regels
Webpagina's vormgeven met CSS: oefenvragen
Set 1: Lees regels en voorspel eenvoudige resultaten10 Oefenvragen
Vraag 1 van 10
color: 18px; padding: 12px;. Wat gebeurt er met deze declaraties?Toon antwoordVerberg antwoord
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
Toon antwoordVerberg antwoord
Vraag 3 van 10
class="panel featured". Welke selector vereist beide klassewoorden op datzelfde element?Toon antwoordVerberg antwoord
Vraag 4 van 10
h2, gevolgd door twee p-elementen. Wat selecteert article p:first-child?Toon antwoordVerberg antwoord
: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
.badge { color: teal; } gevolgd door .badge { color: maroon; }. Welke kleur wint?Toon antwoordVerberg antwoord
Vraag 6 van 10
.panel > a:hover?Toon antwoordVerberg antwoord
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
#4bd?Toon antwoordVerberg antwoord
#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
width: 240px; padding: 12px; border: 3px solid; margin: 8px;. Wat is de breedte van de box inclusief rand?Toon antwoordVerberg antwoord
Vraag 9 van 10
Toon antwoordVerberg antwoord
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
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?Toon antwoordVerberg antwoord
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
/site/pages/team.html; het stijlblad is /site/css/theme.css. Welke relatieve href bereikt het stijlblad?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
section bevat een h3, een p, een aside en daarna nog een p. Wat selecteert h3 ~ p binnen die sectie?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
#article { color: olive; } en de kindalinea komt overeen met p { color: purple; }. Welke kleur gebruikt de alinea?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
style="color: coral;" en komt overeen met .notice { color: indigo !important; } in CSS van de auteur. Welke kleur wordt gebruikt?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
font-size: 1.5em; padding: 0.5em;. Hoeveel binnenruimte wordt aan elke kant ingesteld?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
width: 180px heeft geen effect op de afmetingen. Welke displaywaarde houdt de link op inlineniveau en staat die breedte wel toe?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
width: 260px; padding: 18px; border: 2px solid;. Hoe breed is het inhoudsgebied?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
background-color: linear-gradient(white, navy);. Waarom wordt het kleurverloop niet getoond?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
border-width: 4px; border-color: teal; en geen andere randdeclaraties. Waarom is geen rand zichtbaar?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
@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?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
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
.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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
href="manual.PDF". Welke selector komt overeen met een PDF-uitgang ongeacht hoofdletters of kleine letters?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
#menu a en .menu a.selected. Beide komen overeen met één link. Welke selector heeft een hogere specificiteit?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
div { display: initial; } in. Welke displaywaarde krijgt de div door die declaratie?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
padding-top: 10% op het kindelement berekend?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
background-size: contain; background-position: center;?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
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
h2, p..lead, blockquote { color: teal; } verandert geen van deze elementen. Wat verklaart het resultaat?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
@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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
width: 100%; padding: 0 15px; in een inhoudsgebied van 480px breed, zonder randen of marges. Hoe breed is de box inclusief rand?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
list-style: none;, maar de items zijn nog steeds ingesprongen. Welke extra regel verwijdert de standaardinspringing?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
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
width: 160px is geldig en niet doorgestreept, maar de span is nog steeds slechts even breed als de tekst. Wat verklaart dit?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 2 van 10
li:nth-child(3n+2)?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 3 van 10
<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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 4 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 5 van 10
width: calc(100% - 4rem); padding: 1em; border: 2px solid; font-size: 1.5rem;. Wat is de inhoudsbreedte van het kindelement?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 6 van 10
width: 320px; margin: 0 auto; text-align: center;. Welke horizontale marges en tekstuitlijning ontstaan?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 7 van 10
@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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 8 van 10
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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 9 van 10
/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?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Vraag 10 van 10
border-radius: 50%. Welke afgeronde vorm krijgt de achtergrond?Toon antwoordVerberg antwoord
Sla deze les op om dit antwoord te zien.
Kom je niet uit je eigen opgave? Huiswerkhulp
Kernbegrippen
A
achtergrondafbeelding
achtergrondlaag
afmetingen van de achtergrondafbeelding
afstammeling
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
alfawaarde
attribuutselector
a[href$=".pdf" i] kan documentlinks vormgeven, ook wanneer de bestandsuitgang in hoofdletters staat.automatische marge
B
berekende waarde
em pixels wordt, terwijl een breedtepercentage van de lay-out afhangt.berekening van boxafmetingen
binnenruimte
blokbox
boxschaduw
bronvolgorde
browserstijlblad
C
calc-functie
calc() combineert verenigbare CSS-waarden in een uitdrukking, zodat een lengte relatieve en absolute hoeveelheden kan mengen.calc(100% - 40px) trekt een vaste hoeveelheid af van een breedte relatief aan de container, met spaties rond het minteken.cascade
cascadelaag
ch-eenheid
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.max-width: 65ch volgt de lettergrootte zonder precies 65 letters per regel te beloven.combinator voor het direct volgende zusterelement
+, selecteert een overeenkomend element direct na een ander element wanneer beide hetzelfde ouderelement hebben.h2 + p bereikt een openingsalinea, maar komt niet meer overeen als er een aside tussen staat.combinator voor volgende zusterelementen
~, selecteert overeenkomende latere zusterelementen van een element en staat andere zusterelementen ertussen toe.h2 ~ p kan twee alinea's bereiken met een aside ertussen wanneer ze allemaal hetzelfde ouderelement als de kop hebben.contrastverhouding
CSS
CSS-pixel
CSS-reset
D
declaratie
color: navy; stelt de declaratie de tekstkleur in en scheidt de puntkomma die van de volgende instelling.declaratie met !important
!important is gemarkeerd en daardoor voorrang krijgt op normale declaraties met dezelfde herkomst.p is.E
em-eenheid
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.2em 40px in plaats van opnieuw het ouderelement te volgen.G
gegenereerde inhoud
::after wordt toegevoegd, heeft een content-waarde nodig; essentiële instructies blijven in de HTML.generieke lettertypefamilie
sans-serif tussen aanhalingstekens zet, wordt het een letterlijke lettertypenaam en verliest het zijn rol als generieke terugvaloptie van de lijst.H
hexadecimale kleur
#3ac geeft #33aacc omdat elk cijfer een herhaald paar voor zijn eigen kanaal wordt.hoekafronding
HSL-kleur
huidige tekstkleur
currentColor vertegenwoordigt de eigen tekstkleur van het element wanneer een andere eigenschap met een kleurwaarde een bijpassende waarde nodig heeft.currentColor verandert mee met de tekstkleur wanneer een regel voor aanwijzen alleen color bijwerkt.I
ID-selector
#site-header kan later moeilijker te overschrijven zijn dan een selector met een herbruikbare headerklasse.inhoudsgebied
inline-blockbox
inlinebox
width: 200px toewijst terwijl de span inline blijft.K
kindelement
.menu > li laat items weg waarvan het ouderelement een afzonderlijke geneste lijst binnen het menu is.klasseselector
.notice komt overeen met zowel een gewone melding als een element met class="card notice".kleurverloop
L
lettertypelijst
sans-serif zonder aanhalingstekens geeft ook op een apparaat zonder de benoemde lettertypen een geschikt lettertype.lijstmarkering
::marker.linktoestand
M
marge
O
omtreklijn
omzetting van hoofdletters en kleine letters
overerving
overlopende inhoud
overflow: auto kan zijn lange regel laten scrollen zonder de hele pagina breder te maken.P
percentage
positie van de achtergrondafbeelding
pseudo-element
li::marker kan opsommingstekens kleuren terwijl de tekst van het lijstitem zijn bestaande kleur behoudt.pseudoklasse
:checked kan een selectievakje selecteren waarvan de huidige aangevinkte toestand niet door een klasse wordt weergegeven.R
rand
regelhoogte
rem-eenheid
rem is een lengte relatief aan de lettergrootte van het hoofdelement en biedt een gedeelde referentie voor geneste elementen op de pagina.1.25rem behouden dezelfde tekstgrootte wanneer ze een ongewijzigde grootte van het hoofdelement delen.RGB-kleur
rgb().rgb(30 144 255) geeft dezelfde kanaalhoeveelheden als de hexadecimale waarde #1e90ff met zes cijfers.S
samengestelde selector
p.note bereikt een alinea met de klasse note, terwijl p .note om een afstammeling vraagt.samenvallende marges
selector met specificiteit nul
:where() verwijdert ook het gewicht van zijn argumenten.:where(#main) p blijft gemakkelijk te overschrijven omdat alleen de alinea een typepunt bijdraagt.selectorlijst
h1, h2, h3 kan alle drie de kopniveaus één lettertypefamilie geven zonder nesting te vereisen.sleutelwoord inherit
inherit geeft een eigenschap expliciet de berekende waarde van het ouderelement, ook wanneer die eigenschap normaal niet overerft.font: inherit op bedieningselementen instelt, kan hun door de browser toegewezen lettertype worden vervangen door dat van de omringende tekst.sleutelwoord initial
initial selecteert de beginwaarde van een eigenschap uit de CSS-specificatie, onafhankelijk van de standaardregel voor het HTML-element.display: initial op een div toepast, krijgt die inlineweergave, ook al maakt de browser er normaal een blok van.sleutelwoord revert
revert draait een eigenschap terug voorbij de huidige stijlherkomst, zodat een toepasselijke waarde uit een lagere herkomst zichtbaar wordt.display: revert kan de normale, door de browser toegewezen blockweergave van een div herstellen.sleutelwoord revert-layer
revert-layer draait de waarde van een eigenschap terug voorbij de huidige cascadelaag, zodat een bron met lagere voorrang die kan leveren.sleutelwoord unset
unset volgt de normale overerving voor een overgeërfde eigenschap en gebruikt de beginwaarde voor een niet-overgeërfde eigenschap.unset op color gebruikt, kan de tekstkleur van een ouderelement behouden blijven, terwijl gebruik op margin een lokale marge verwijdert.specificiteit
specificiteitsdrietal ID-CLASS-TYPE
a[href]:hover heeft het drietal 0-2-1, waarbij het attribuut en hover als CLASS worden geteld.standaardmodus
<!DOCTYPE html> vooraan te plaatsen voorkom je verouderd gedrag dat een pagina in quirksmodus kan beïnvloeden.stijlblad
css/styles.css kan een pagina haar vormgeving laden uit het bestand in de naastliggende map.stijlenpaneel
stijlherkomst
structurele pseudoklasse
p:first-child.T
tekstdecoratie
tekstuitlijning
toestand voor zichtbare focus
a:focus-visible is geselecteerd voordat de link wordt geactiveerd.typeselector
p kan de tussenruimte van alinea's op de hele pagina vastleggen zonder elke alinea een klasse te geven.U
universele selector
*, komt overeen met elk element maar draagt nul specificiteit bij, waardoor die nuttig is voor brede standaardstijlen en CSS-resets.* kan marges terugzetten, waarna een klasseselector met grotere specificiteit tussenruimte kan toevoegen.V
variabel lettertype
verkorte eigenschap
background: white; schrijft, kan een foto verdwijnen die eerder via background-image is toegewezen.viewporteenheid
vw de breedte en vh de hoogte als referentie gebruikt.10vh is 80px wanneer de viewporthoogte 800 CSS-pixels is, ook binnen een lagere container.W
weblettertype
Z
zusterelement
#
@font-face-regel
@font-face-regel wijst een CSS-familienaam en kenmerken van een lettertypevariant toe aan een lettertypebestand dat in een lettertypelijst kan worden gebruikt.Over deze les
Door StudeliFout melden
Maak je eigen Studiemateriaal
Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.