CSS position : cinq valeurs, une démo en direct

Guide de CSS position

CSS position : démo de static, relative, absolute, fixed et sticky | We.Inc

Passez un même élément de static à relative, absolute, fixed et sticky dans une démo défilante. Blocs conteneurs, inset, dépannage de sticky et centrage expliqués.

La propriété position détermine comment un élément est placé. static correspond au flux normal. relative le décale tout en conservant son espace. absolute le retire du flux et le place par rapport à l'ancêtre positionné le plus proche. fixed l'épingle au viewport. sticky défile normalement jusqu'à atteindre un seuil comme top: 0, puis reste en place.

Les cinq valeurs

La démo ci-dessous contient une boîte orange dans une zone défilante. Changez sa valeur de position, déplacez les décalages, faites défiler et observez par rapport à quoi elle est mesurée. Suivent un guide des blocs conteneurs, une liste de vérification pour un sticky qui ne colle pas, et le raccourci inset.

Questions fréquentes

Quelle est la différence entre absolute et relative ?

relative décale visuellement un élément mais laisse son espace d'origine dans la mise en page, rien autour ne bouge donc. absolute retire complètement l'élément de la mise en page, les voisins comblent le vide, et top ou left sont mesurés depuis l'ancêtre positionné le plus proche plutôt que depuis l'endroit où il aurait été.

Pourquoi position: sticky ne fonctionne-t-il pas ?

Les causes habituelles sont une valeur top manquante, un ancêtre avec overflow hidden ou auto, ou un parent qui n'est pas plus haut que l'élément sticky. Parcourez la liste de vérification de cette page dans l'ordre ; les deux premiers points couvrent la plupart des cas.

Par rapport à quoi absolute est-il positionné ?

Par rapport à son bloc conteneur : la padding box de l'ancêtre le plus proche dont la position est autre que static. Les ancêtres avec un transform, un filter ou certaines valeurs de contain comptent aussi. S'il n'y en a aucun, c'est le bloc conteneur initial, qui a la taille du viewport.

Pourquoi mon en-tête fixed bouge-t-il avec la page ?

Un ancêtre a un transform, perspective, filter, backdrop-filter, will-change: transform ou contain: paint. Chacune de ces propriétés transforme cet ancêtre en bloc conteneur pour les descendants fixed, l'en-tête est donc fixé à lui au lieu de l'écran.

Qu'est-ce que inset en CSS ?

Un raccourci pour top, right, bottom et left, qui suit le même schéma de une à quatre valeurs que margin. inset: 0 étire un élément positionné sur tout son bloc conteneur. inset-inline et inset-block définissent les paires pour chaque axe.

Le bloc conteneur, en termes simples

Centrer avec le positionnement absolute

Chaque valeur en détail

Valeurs de position

Ce qui crée un bloc conteneur pour absolute et fixed

Ancêtres qui captent les descendants positionnés (selon MDN)

Les modèles que vous utiliserez

Badge dans le coin d'une carte

La carte est l'ancêtre positionné. Des décalages négatifs font dépasser le badge à moitié hors du coin.

En-tête de tableau sticky

Le conteneur défile, donc th avec top: 0 colle à lui. Le fond empêche les lignes de transparaître.

Raccourci inset

Même schéma que margin : une valeur pour tous les côtés, deux pour vertical et horizontal, quatre dans le sens horaire en partant du haut.

Bac à sable de position

valeur de position

Le parent a position: relative

Les décalages sont ignorés. La boîte est dans le flux normal, entre les paragraphes.

La boîte est dessinée décalée, mais l'espace qu'elle occuperait est conservé. Les voisins ne bougent pas.

Mesurée depuis le parent en pointillés, qui a position: relative.

Aucun parent positionné, elle est donc mesurée depuis la zone de démo défilante, l'ancêtre positionné suivant.

Épinglée au cadre de la démo pendant le défilement. Le cadre a un transform, ce qui en fait le bloc conteneur à la place de la fenêtre du navigateur.

Défile avec le texte jusqu'à se trouver à top pixels du haut du conteneur défilant, puis reste en place jusqu'à ce que son parent sorte de l'écran.

Zone de démo défilante

Faites défiler ce cadre. Le texte est du remplissage pour avoir de quoi défiler.

Parent

Premier paragraphe avant la boîte.

Paragraphe après la boîte. Observez s'il remonte quand la boîte quitte le flux.

Ligne {n} de contenu supplémentaire à faire défiler.

Contenu après le parent, ligne {n}.

Copier le CSS

Pourquoi fixed reste dans le cadre : le cadre a transform: translateZ(0). Tout transform fait d'un élément le bloc conteneur de ses descendants fixed. Sur une vraie page sans ancêtre de ce type, fixed s'attache à la fenêtre du navigateur.

Sticky ne fonctionne pas : liste de vérification

En-tête sticky caché derrière d'autres contenus ? Voir

z-index et contextes d'empilement

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site