CSS position: vijf waarden, één live demo

Gids voor CSS position

CSS position: demo van static, relative, absolute, fixed en sticky | We.Inc

Wissel één element tussen static, relative, absolute, fixed en sticky in een scrollende demo. Containing blocks, inset, problemen met sticky oplossen en centreren uitgelegd.

De eigenschap position bepaalt hoe een element wordt geplaatst. static is de normale flow. relative verschuift het element terwijl de ruimte behouden blijft. absolute haalt het uit de flow en plaatst het ten opzichte van de dichtstbijzijnde gepositioneerde voorouder. fixed zet het vast aan de viewport. sticky scrolt normaal mee tot het een drempel bereikt, zoals top: 0, en blijft daar dan staan.

De vijf waarden

De demo hieronder heeft één oranje vak in een scrollbaar gebied. Wissel de position-waarde, verschuif de offsets, scrol en kijk waarvandaan het wordt gemeten. Daarna volgen uitleg over containing blocks, een checklist voor sticky dat niet blijft plakken en de inset-shorthand.

Veelgestelde vragen

Wat is het verschil tussen absolute en relative?

relative verschuift een element visueel, maar laat de oorspronkelijke ruimte in de lay-out staan, zodat er niets omheen beweegt. absolute haalt het element helemaal uit de lay-out, de buren sluiten het gat, en top of left worden gemeten vanaf de dichtstbijzijnde gepositioneerde voorouder in plaats van vanaf de plek waar het zou hebben gestaan.

Waarom werkt position: sticky niet?

De gebruikelijke oorzaken zijn een ontbrekende top-waarde, een voorouder met overflow hidden of auto, of een ouder die niet hoger is dan het sticky element. Loop de checklist op deze pagina in volgorde door; de eerste twee punten verklaren de meeste gevallen.

Ten opzichte waarvan positioneert absolute?

Ten opzichte van zijn containing block: de padding box van de dichtstbijzijnde voorouder waarvan position iets anders is dan static. Voorouders met een transform, filter of bepaalde contain-waarden tellen ook mee. Bestaat er geen, dan is het het initiële containing block, dat de grootte van de viewport heeft.

Waarom beweegt mijn fixed header mee met de pagina?

Een voorouder heeft een transform, perspective, filter, backdrop-filter, will-change: transform of contain: paint. Elk daarvan maakt die voorouder tot het containing block voor fixed afstammelingen, dus de header staat vast aan die voorouder in plaats van aan het scherm.

Wat is inset in CSS?

Een shorthand voor top, right, bottom en left, met hetzelfde patroon van één tot vier waarden als margin. inset: 0 rekt een gepositioneerd element uit over zijn containing block. inset-inline en inset-block stellen de paren per as in.

Het containing block, in gewone taal

Centreren met absolute positionering

Elke waarde in detail

position-waarden

Wat een containing block maakt voor absolute en fixed

Voorouders die gepositioneerde afstammelingen opvangen (volgens MDN)

Patronen die u gaat gebruiken

Badge op de hoek van een kaart

De kaart is de gepositioneerde voorouder. Negatieve offsets duwen de badge half buiten de hoek.

Sticky tabelkop

De wrapper scrolt, dus th met top: 0 blijft eraan plakken. De achtergrond voorkomt dat rijen erdoorheen schijnen.

inset-shorthand

Hetzelfde patroon als margin: één waarde voor alle kanten, twee voor verticaal en horizontaal, vier met de klok mee vanaf boven.

Position-speeltuin

position-waarde

Ouder heeft position: relative

Offsets worden genegeerd. Het vak staat in de normale flow tussen de alinea's.

Het vak wordt verschoven getekend, maar het gat waar het zou staan blijft behouden. Buren bewegen niet.

Gemeten vanaf de gestippelde ouder, die position: relative heeft.

Geen gepositioneerde ouder, dus het wordt gemeten vanaf het scrollende demogebied, de volgende gepositioneerde voorouder.

Vastgezet aan het demoframe terwijl u scrolt. Het frame heeft een transform, waardoor het het containing block wordt in plaats van het browservenster.

Scrolt mee met de tekst tot het top pixels van de bovenkant van de scroller staat, en blijft dan staan tot de ouder wegscrolt.

Scrollbaar demogebied

Scrol in dit frame. De tekst is opvulling, zodat er iets is om langs te scrollen.

Ouder

Eerste alinea vóór het vak.

Alinea na het vak. Let op of deze omhoog schuift als het vak de flow verlaat.

Regel {n} met extra content om te scrollen.

Content na de ouder, regel {n}.

CSS kopiëren

Waarom fixed in het frame blijft: het frame heeft transform: translateZ(0). Elke transform maakt een element tot het containing block voor fixed afstammelingen. Op een echte pagina zonder zo'n voorouder hecht fixed zich aan het browservenster.

Sticky werkt niet: checklist

Sticky header verborgen achter andere content? Zie

z-index en stacking contexts

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap