Position

30 min 2 exercices Niveau 5

La position des éléments est essentielle dans la mise en page d’une page web. C’est ce qui définit tout le design d’un site internet.

La propriété position

Afin de gérer le positionnement des éléments, le langage CSS met à disposition la propriété position.

Cette propriété doit d’abord recevoir une des valeurs suivantes :

  • static
  • relative
  • fixed
  • absolute
  • sticky

Ensuite, les éléments sont positionnés en utilisant les propriétés CSS suivantes : top, left, right, bottom. Néanmoins, la propriété position doit d’abord être définie avec une des valeurs listées ci-dessus ; si tel n’est pas le cas, top, left, right, bottom ne fonctionnent pas.

La position statique

Les éléments HTML sont, par défaut, placés en position statique (static, en anglais). La position de ces éléments n’est pas modifiable en utilisant les propriétés haut, bas, gauche, droite.

Les éléments utilisant position: static; ne sont pas positionnés de manière particulière. Ils suivent simplement le flux de la page.

La position relative

Un élément placé en position relative, en utilisant la propriété position : relative;, est positionné de façon relative par rapport à sa position initiale.

Utiliser les propriétés haut, bas, gauche, droite sur un élément placé de manière relative ajuste la position de cet élément plus loin que sa position normale. Le vide laissé par un élément placé de manière relative n’est pas comblé par les autres éléments de la page.

La position fixe

Un élément HTML placé de façon fixe, en utilisant position: fixed;, ne bougera pas. Cela signifie que même si l’utilisateur fait défiler la page vers le bas, l’élément continuera d’être toujours affiché. L’élément est ensuite positionné en utilisant les propriétés top, bottom, left, right.

Lorsque la position d’un élément est définie sur fixed, celui-ci reste affiché à l’écran, peu importe la position de l’utilisateur sur la page. De plus, les éléments se situant en dessous sont remontés, comme si l’élément fixed n’existait pas sur la page.

La position absolue

Un élément HTML positionné avec la valeur position: absolute; sera positionné en fonction de l’élément contenant “positionné” le plus proche. Cependant, si un élément positionné de manière absolu n’a pas de contenant, il sera positionné en fonction de son plus proche élément parent "positionné", ou, à défaut, en fonction de l’élément <html>.

Remarque : Un contenant “positionné” est un élément dont la position est différente de static.

Exemple :

HTML:

<body>

    <div class="contenu">
        <p>
            Je suis un paragraphe contenu dans une div en <code>position: relative;</code>
        </p>
        <div class="premier">
            <p> Je suis un paragraphe dans une div dont la position est <code> position:absolute; </code> . Je suis contenu dans une div de classe contenu dont la position est fixed.</p>
        </div>
    </div>

</body>

CSS :

.contenu
{
    position: relative;
    width: 600px;
    height: 200px;
    border: 5px solid red;
}

.premier
{
    position: absolute;
    width: 300px;
    height: 100px;
    right: 0px;
    border: 3px solid red;
}

La position sticky

Un élément HTML dont la position est collée (sticky, en anglais) est positionné en fonction de la position de l’utilisateur sur la page.

En fait, position : sticky; varie entre relative et fixed. Tant que l’utilisateur fait défiler la page, l’élément sera en position relative et suivra le défilement de la page jusqu’à ce que l’élément retrouve sa position initiale, auquel cas, il reviendra en position fixe.

Remarque : Internet Explorer ne prend pas en charge la position sticky. En ce qui concerne Safari, il faut rajouter le préfixe -webkit- pour que la position sticky fonctionne. Enfin, il faut absolument spécifier une position top, bottom, right ou left pour que la position sticky fonctionne.

Exemple :

div.exemple {
    position: -webkit-sticky; /* Pour Safari */
    position: sticky; /* L'élément est en position sticky, donc défilera en même temps que la page */
    top: 0; /* L'élément sera en position fixe lorsque l'utilisateur reviendra en haut de la page */
}

Superposition d’éléments

Lorsque les éléments sont positionnés, ils peuvent ensuite être superposés les uns sur les autres.

La propriété CSS z-index définit l’ordre d’empilement des éléments, c'est-à-dire, quel élément doit être placé en premier plan, lequel doit être placé derrière le premier élément, etc.

Un élément peut avoir un ordre d’empilement positif ou négatif. Un élément avec un ordre d’empilement plus élevé sera placé devant un élément avec un ordre d’empilement plus faible.

Exemple :

.logo {
    position: absolute;
    left: 20px;
    top: 0px;
    z-index: -1; /* Avec un ordre d'empilement définit à -1, le logo sera placé derrière le texte */
}
logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus