Valeur de la propriété CSS position: absolute

Propriété CSS position


position: absoluteC'est l'une des valeurs les plus puissantes de la propriété de positionnement CSS.

Le positionnement absoluplace l'élémenthors du flux normal du document, il n'occupe plus d'espace, puis par rapport à sonancêtre positionné le plus procheeffectue un positionnement précis.

C'est la technologie clé pour créer des composants d'interface utilisateur tels que les popups, les menus déroulants, les cartes flottantes, etc.

Définitions de mots:absoluteDu latinabsolutussignifiant « absolu, inconditionnel », indiquant que la position est complètement indépendante du flux du document.


Syntaxe de base

position: absoluteDoit être utilisé avectop、right、bottom、leftpropriété pour spécifier la position.

/* 语法 */
position: absolute;

/* 常用组合 */
.box {
    position: absolute;
    top: 0;      /* 顶部对齐 */
    left: 0;     /* 左侧对齐 */
    /* 或者 */
    top: 50%;    /* 居中开始 */
    left: 50%;
    transform: translate(-50%, -50%);  /* 完全居中 */
}

Principe de positionnement

ComprendreabsoluteLa clé du positionnement estle contexte de positionnementLa notion de :

contexte de positionnement

Les éléments positionnés de manière absolue vontRechercher vers le haut couche par couche, trouver le premierpositionnement non statiqueL'élément ancêtre est utilisé comme référence. Si aucun élément ancêtre de ce type n'est trouvé, alors par rapport àBloc conteneur initialpositionné (généralement la page).

Processus de recherche

┌─────────────────────────────────────┐
│ 初始包含块 (body ou  html)           │
│  ┌─────────────────────────────┐   │
│  │ parent (position: relative)  │ ← 找到!作为参照 │
│  │  ┌─────────────────────┐    │   │
│  │  │ child (absolute)     │    │   │
│  │  │ top: 0, left: 0      │    │   │
│  │  └─────────────────────┘    │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘

Fonctionnalités principales

Caractéristique 1 : Retiré du flux du document

absoluteélémentN'occupe pas d'espace dans le documentLes éléments environnants ignorent son existence et se disposent normalement. C'est comme si l'élément avait "flotté" hors du document.

Caractéristique 2 : Positionnement relatif à un ancêtre positionné

"Positionnable" désignepositionLa valeur n'est passtatic(peut êtrerelative、absolute、fixedousticky)。

Fonctionnalité 3 : Activation de z-index

etrelativeDe même,absoluteactiveraz-indexPropriété.

Fonctionnalité 4 : la marge fusionne avec le padding

Contrairement au flux normal du document,absoluteLa marge de l'élément ne fusionne pas avec les marges des éléments adjacents.


Exemple

Comprenons en profondeur à travers des exemplesposition: absolutecomment cela fonctionne.

Exemple 1 : Le positionnement absolu le plus basique

Cet exemple montre comment un élément est positionné par rapport à son conteneur parent :

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
/* Le conteneur parent a besoin d'un positionnement non statique pour servir de référence */
        .container {
position: relative; /* Clé : comme référence de positionnement */
            width: 300px;
            height: 200px;
            background-color: #f5f5f5;
            border: 2px solid #3498db;
        }

/* Élément positionné en absolu */
        .absolute-box {
            position: absolute;
            top: 20px;
            right: 20px;
            width: 80px;
            height: 40px;
            background-color: #e74c3c;
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="container">
Conteneur parent (position: relative)
        <div class="absolute-box">Positionnement absolu</div>
    </div>
    <p>La boîte rouge est positionnée par rapport au coin supérieur droit du conteneur parent (et non de la page).</p>
</body>
</html>

Exemple 2 : lorsqu'il n'y a aucun ancêtre positionné

Si l'élément parent n'a aucun positionnement défini, l'élément continuera à chercher vers le haut et sera finalement positionné par rapport à la page :

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
/* Remarque : position: relative n'est pas défini ici */
        .container-no-position {
            width: 300px;
            height: 150px;
            background-color: #f0f0f0;
            border: 2px solid #ccc;
            padding: 20px;
        }

/* Comme l'élément parent n'a pas de positionnement, il sera positionné par rapport à la page */
        .floating-box {
            position: absolute;
            top: 10px;
            left: 10px;
            background-color: #2E7DCC;
            color: white;
            padding: 10px 20px;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="container-no-position">
Conteneur parent (sans positionnement)
        <div class="floating-box">Positionné par rapport à la page</div>
    </div>
    <p>Comme le conteneur parent n'a pas de position définie, la boîte verte sera positionnée par rapport au coin supérieur gauche de la page entière (body).</p>
</body>
</html>

Exemple 3 : créer une boîte popup centrée

C'estabsoluteL'un des scénarios d'application les plus courants : créer des popups.

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
/* Overlay : couvre toute la page */
        .overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            display: flex;
            align-items: center;
            justify-content: center;
        }

/* Conteneur modal */
        .modal {
position: relative; /* Crée un contexte de positionnement */
            width: 400px;
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
            overflow: hidden;
        }

/* En-tête de la modale */
        .modal-header {
            background-color: #3498db;
            color: white;
            padding: 15px 20px;
            font-size: 18px;
            font-weight: bold;
        }

/* Bouton de fermeture : positionné en absolu */
        .modal-close {
            position: absolute;
            top: 10px;
            right: 15px;
            cursor: pointer;
            font-size: 24px;
            line-height: 1;
        }

/* Corps de la modale */
        .modal-body {
            padding: 20px;
            line-height: 1;
        }
    </style>
</head>
<body>
    <div class="overlay">
        <div class="modal">
            <div class="modal-header">
Info-bulle
                <span class="modal-close">&times;</span>
            </div>
            <div class="modal-body">
Il s'agit d'une fenêtre modale centrée créée à l'aide du positionnement absolu.
Le bouton de fermeture est positionné dans le coin supérieur droit à l'aide de position: absolute.
            </div>
        </div>
    </div>
</body>
</html>

Exemple 4 : Ajout d'un filigrane de texte à une image

En utilisant le positionnement absolu, vous pouvez superposer du texte ou des étiquettes sur une image :

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
        .image-container {
position: relative; /* Crée un contexte de positionnement */
            display: inline-block;
        }

        .image-container img {
            width: 300px;
            height: 200px;
            display: block;
            object-fit: cover;
        }

/* Étiquette en haut à gauche */
        .badge {
            position: absolute;
            top: 10px;
            left: 10px;
            background-color: #e74c3c;
            color: white;
            padding: 4px 10px;
            font-size: 12px;
            font-weight: bold;
            border-radius: 3px;
        }

/* Filigrane en bas à droite */
        .watermark {
            position: absolute;
            bottom: 10px;
            right: 10px;
            color: white;
            font-size: 14px;
            text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
        }
    </style>
</head>
<body>
    <div class="image-container">
        <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='200'%3E%3Crect fill='%233498db' width='300' height='200'/%3E%3Ctext x='50%25' y='50%25' text-anchor='middle' fill='white' font-size='24'%3EEXAMPLE%3C/text%3E%3C/svg%3E" alt="Image d'exemple">
        <span class="badge">En vedette</span>
        <span class="watermark">example.com</span>
    </div>
</body>
</html>

Exemple 5 : menu déroulant

Le positionnement absolu est une technologie clé pour créer des menus déroulants :

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
        .dropdown {
position: relative; /* Créer un contexte de positionnement */
            display: inline-block;
        }

/* Bouton déclencheur */
        .dropbtn {
            background-color: #3498db;
            color: white;
            padding: 12px 24px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }

/* Innihald fellilista */
        .dropdown-content {
position: absolute; /* Algjör staðsetning */
top: 100%; /* Sýna fyrir neðan hnappinn */
            left: 0;
            min-width: 160px;
            background-color: white;
            box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
            border-radius: 4px;
display: none; /* Falið sjálfgefið */
        }

/* Sýna þegar mús er yfir */
        .dropdown:hover .dropdown-content {
            display: block;
        }

/* Valkostir fellilista */
        .dropdown-content a {
            display: block;
            padding: 12px 16px;
            text-decoration: none;
            color: #333;
            border-bottom: 1px solid #eee;
        }

        .dropdown-content a:hover {
            background-color: #f5f5f5;
        }

        .dropdown-content a:last-child {
            border-bottom: none;
        }
    </style>
</head>
<body>
    <div class="dropdown">
        <button class="dropbtn">menu déroulant</button>
        <div class="dropdown-content">
            <a href="#">Option 1</a>
            <a href="#">Option 2</a>
            <a href="#">Option 3</a>
        </div>
    </div>
    <p>Survolez ce qui précède pour voir l'effet de menu déroulant.</p>
</body>
</html>

Exemple 6 : positionnement sur une grille 3x3

En utilisant le positionnement absolu, vous pouvez facilement réaliser un alignement des éléments en grille de neuf cases :

Exemple

<!DOCTYPE html>
<html>
<head>
    <style>
        .box {
            position: relative;
            width: 300px;
            height: 200px;
            background-color: #f5f5f5;
            border: 2px solid #ddd;
        }

        .corner {
            position: absolute;
            width: 80px;
            height: 40px;
            background-color: #3498db;
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 12px;
            border-radius: 4px;
        }

/* Quatre coins */
        .top-left { top: 10px; left: 10px; }
        .top-right { top: 10px; right: 10px; }
        .bottom-left { bottom: 10px; left: 10px; }
        .bottom-right { bottom: 10px; right: 10px; }

/* Centres des quatre côtés */
        .top-center {
            top: 10px;
            left: 50%;
            transform: translateX(-50%);
        }
        .bottom-center {
            bottom: 10px;
            left: 50%;
            transform: translateX(-50%);
        }
        .left-center {
            left: 10px;
            top: 50%;
            transform: translateY(-50%);
        }
        .right-center {
            right: 10px;
            top: 50%;
            transform: translateY(-50%);
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="corner top-left">En haut à gauche</div>
        <div class="corner top-center">Haut</div>
        <div class="corner top-right">En haut à droite</div>
        <div class="corner left-center">Gauche</div>
        <div class="corner right-center">Droite</div>
        <div class="corner bottom-left">En bas à gauche</div>
        <div class="corner bottom-center">Bas</div>
        <div class="corner bottom-right">En bas à droite</div>
    </div>
</body>
</html>

Notes

Remarque importante :Les éléments positionnés en absolu sont retirés du flux du document, ce qui signifie qu’ils n’occupent aucun espace. Si tous les éléments frères utilisent le positionnement absolu, le conteneur peut "s'effondrer" (la hauteur devient 0). Assurez-vous que le conteneur parent a des dimensions explicites ou utilisez d'autres méthodes pour prendre en charge la hauteur.

Chaîne des ancêtres de positionnement

Le positionnement absolu recherche vers le haut, couche par couche, un ancêtre positionné :

元素的查找顺序:
1. 首先查找父元素是否有非 static 定位
2. 如果没有,继续查找祖父元素
3. 依此类推,直到 html 元素
4. 如果都没有,则相对于初始包含块(页面)定位

Problème de largeur

La largeur des éléments positionnés en absoluDéterminée par le contenu par défaut(semblable aux éléments en ligne). Si vous devez remplir le conteneur, vous devez définir explicitement la largeur :

.full-width {
    position: absolute;
    left: 0;
    right: 0;     /* 配合 left: 0 和 right: 0 使宽度100% */
    /* 或者 */
    width: 100%;  /* 直接设置宽度 */
}

Comparaison avec d'autres valeurs de positionnement

td> fenêtre d'affichage (après fixed)
valeur de position S'il quitte le flux du document référence de positionnement S'il se déplace avec le défilement
static non Flux normal du document Oui
relative Non (conserve l'espace) Position d'origine Oui
absolute Oui Ancêtre positionné le plus proche Oui
fixed Oui Fenêtre d'affichage (fenêtre du navigateur) non
sticky Non (avant fixed)Oui (après fixed, non)

Scénarios d'application courants

Scénario 1 : Navigation avec en-tête fixe

.navbar {
    position: fixed;
    top: 0;
    width: 100%;
    height: 60px;
}

Scénario 2 : Indicateurs de carrousel d'images

.carousel {
    position: relative;
}

.indicators {
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
}

Scénario 3 : Positionnement des bulles dans une fenêtre de chat

.message-bubble {
    position: absolute;
    left: 20px;
    max-width: 70%;
}

Résumé

position: absoluteC'est une technologie indispensable dans la mise en page web moderne :

  • élémentSorti du flux du document, n'occupe pas d'espace
  • par rapport àl'élément ancêtre positionné le plus prochePositionnement
  • Doit être utilisé avectop、right、bottom、leftUtilisation
  • activerz-index, peut contrôler l'ordre d'empilement
  • C'est la technologie essentielle pour créer des fenêtres contextuelles, des menus déroulants et des étiquettes flottantes.
  • Le conteneur parent doit être défini surrelativepour créer un contexte de positionnement

Propriété CSS position

autres extensions