HTML en CSS leren: position sticky en fixed, en z-index
Sticky, fixed en z-index
De website van het repaircafé is lang. Wie naar beneden scrolt, verliest het menu uit het oog, en Walter wil dat de knop om je toestel aan te melden altijd in beeld blijft.
Blijven staan tijdens het scrollen
position: sticky laat een element gewoon in de stroom staan, tot het bij het scrollen de rand bereikt die je met top geeft. Dan blijft het daar plakken, zolang zijn ouder in beeld is. Ideaal voor een kop of een menu.
position: fixed haalt een element uit de stroom en zet het vast ten opzichte van het scherm: het scrolt nooit mee. Denk aan een knop rechtsonder.
Liggen elementen over elkaar, dan bepaalt z-index wie bovenaan ligt: het hoogste getal wint. Het werkt bij elementen met een position en bij flex- en grid-items.
Scrol in de pagina: de kop blijft bovenaan plakken en de knop blijft rechtsonder.
header { position: sticky; top: 0; z-index: 10;}.knop { position: fixed; right: 16px; bottom: 16px;}Probeer het zelf
Zet de knop "Meld je toestel aan" vast rechtsonder in het scherm, 16px van de onderkant en de rechterkant.
/* Jouw CSS komt hier. */<!DOCTYPE html><html lang="nl"><head> <title>Kapot? Mag Niet!</title> <link rel="stylesheet" href="basis.css"> <link rel="stylesheet" href="style.css"></head><body> <header> <img src="sleutel.svg" alt="" width="40" height="40"> <h1>Kapot? Mag Niet!</h1> <nav> <a href="index.html">Home</a> <a href="tafels.html">Tafels</a> <a href="agenda.html">Agenda</a> <a href="aanmelden.html">Aanmelden</a> </nav> </header> <main> <p class="slogan">Elke eerste zaterdag van de maand in het parochiehuis van Dendermonde. Breng je kapotte spullen mee: we herstellen ze samen.</p> <a class="knop" href="aanmelden.html">Meld je toestel aan</a> <section class="tafels"> <article class="tafel fiets"> <span class="etiket">Vol</span> <h2>Fietsen</h2> <p>Een lekke band of een slappe rem? Jef en Marc helpen je.</p> </article> <article class="tafel elektro"> <h2>Elektro</h2> <p>Lampen, broodroosters en koffiezetapparaten.</p> </article> <article class="tafel naai"> <span class="etiket">Nieuw</span> <h2>Naaiatelier</h2> <p>Een losse naad of een kapotte rits.</p> </article> <article class="tafel computer"> <h2>Computers</h2> <p>Een trage laptop of een gebarsten scherm.</p> </article> </section> </main> <footer> <p>Parochiehuis, Kerkstraat 12, 9200 Dendermonde</p> </footer></body></html>body { margin: 0; font-family: system-ui, sans-serif; background: #f4f0e8; color: #2a2622;}header { padding: 12px 16px; background: #1f4e5f; color: #ffffff;}header h1 { margin: 0; font-size: 1.5rem;}nav a { padding: 6px 10px; border-radius: 999px; color: #ffffff; text-decoration: none;}main { padding: 0 16px 24px;}.slogan { margin: 16px 0 0; max-width: 40rem;}.tafels { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 16px 0;}.knop { display: inline-block; margin-top: 12px; padding: 10px 18px; border-radius: 999px; background: #d1495b; color: #ffffff; font-weight: 700; text-decoration: none;}/* Een gekleurde rand per tafel en een etiket met een gaatje: alleen voor de sier. */.tafel { padding: 14px 16px 16px; border-top: 4px solid #f2a541; border-radius: 14px; background: #ffffff; box-shadow: 0 1px 2px rgb(42 38 34 / 0.08), 0 8px 18px -12px rgb(42 38 34 / 0.35);}.tafel h2 { margin: 0 0 6px; font-size: 1.1rem;}.tafel p { margin: 0; color: #5b544c;}.fiets { border-top-color: #2a9d8f;}.elektro { border-top-color: #f2a541;}.naai { border-top-color: #d1495b;}.computer { border-top-color: #5b6cae;}.etiket { display: inline-block; margin-bottom: 8px; padding: 3px 10px 3px 16px; border-radius: 4px 999px 999px 4px; background: radial-gradient(circle at 7px 50%, #ffffff 0 2.5px, transparent 3px), #ffd166; color: #3d2c00; font-size: 0.75rem; font-weight: 700;}form { display: grid; gap: 6px; max-width: 28rem; margin: 16px 0;}label { margin-top: 8px; font-weight: 600;}input,select,textarea { padding: 8px 10px; border: 1px solid #b9b0a3; border-radius: 8px; background: #ffffff; color: #2a2622; font: inherit;}button { justify-self: start; margin-top: 12px; padding: 10px 18px; border: 0; border-radius: 999px; background: #1f4e5f; color: #ffffff; font: inherit; font-weight: 700;}footer { padding: 12px 16px; background: #1f4e5f; color: #ffffff;}Klaar voor meer?
De volledige les heeft 5 oefeningen, van makkelijk naar uitdagend, met hints, punten en een reeks die je kan opbouwen.
Begin aan de les