Il existe d'autres techniques un peu particulières permettant de positionner avec précision des éléments sur la page :
- Le positionnement absolu : il nous permet de placer un élément n'importe où sur la page (en haut à gauche, en bas à droite, tout au centre, etc..)
- Le positionnement fixe : identique au positionnement
absolu, mais cette fois l'élément reste toujours visible, même si
on descend plus bas dans la page. C'est un peu comme le même principe
que background-attachment:
fixed; (si vous
vous en souvenez encore).
- Le positionnement relatif : permet de décaler l'élément par rapport à sa position normale.
Comme pour les flottants, le positionnement absolu, fixé et relatif fonctionne aussi sur des balises de type inline.
Toutefois, vous verrez qu'on l'utilise bien plus souvent sur des balises block que sur des balises inline.
Il faut d'abord faire son choix entre les 3 modes de positionnement disponibles. Pour cela, on utilise la propriété CSS
position à laquelle on donne une de ces valeurs :
- absolute : positionnement absolu.
- fixed : positionnement fixe.
- relative : positionnement relatif.
Nous allons étudier chacun de ces positionnements un à un.
Le positionnement absolu
Le positionnement absolu permet de placer un élément (réellement)
n'importe où sur la page. Pour effectuer un positionnement absolu, on
doit écrire :
Code : CSS - Sélectionner | element
{
position: absolute;
}
|
Mais ça ne suffit pas ! On a dit qu'on voulait un positionnement absolu, mais encore faut-il dire
où on veut que le bloc soit positionné sur la page.
Pour ce faire, on va utiliser 4 propriétés CSS :
- left : position par rapport à la gauche de la page.
- right : position par rapport à la droite de la page.
- top : position par rapport au haut de la page.
- bottom : position par rapport au bas de la page.
On peut leur donner une valeur en pixels, comme "14px", ou bien une valeur en pourcentage, comme "50%".
Si ce n'est pas très clair pour certains d'entre vous, ce schéma devrait vous aider à comprendre :
Avec ça, vous devriez être capables de positionner correctement votre bloc.
Il faut donc utiliser la propriété
position et au moins une des 4 propriétés ci-dessus (
top,
left,
right ou
bottom). Si on écrit par exemple :
Code : CSS - Sélectionner | element
{
position: absolute;
right: 0px;
bottom: 0px;
}
|
... cela signifie que le bloc doit être positionné tout en bas à droite
(0 pixels par rapport à la droite de la page, 0 par rapport au bas de la
page).
Si on essaye de placer notre bloc
<nav> en bas à droite de la page, on obtient ce résultat :
On peut bien entendu ajouter une marge intérieure (padding) au menu pour qu'il soit moins collé à sa bordure.
Les éléments positionnés en absolu sont placés par-dessus le reste des
éléments de la page ! Par ailleurs, si vous placez deux éléments en
absolu vers le même endroit, ils risquent de se chevaucher. Dans ce cas,
utilisez la propriété
z-index pour indiquer quel élément doit apparaître par-dessus les autres :
Code : CSS - Sélectionner 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | element
{
position: absolute;
right: 0px;
bottom: 0px;
z-index: 1;
}
element2
{
position: absolute;
right: 30px;
bottom: 30px;
z-index: 2;
}
|
L'élément ayant la valeur de z-index la plus élevée sera placé par-dessus les autres, comme le montre ce schéma :
Une petite précision technique qui a son
importance : le positionnement absolu ne se fait pas toujours forcément
par rapport au coin en haut à gauche de la fenêtre ! Si vous positionnez
en absolu un bloc A qui se trouve dans un autre bloc B lui-même
positionné en absolu (ou fixe ou relatif), alors votre bloc A se
positionnera par rapport au coin en haut à gauche du bloc B. Faites le
test, vous verrez !
Le positionnement fixe
Le principe est
exactement le même que pour le
positionnement absolu, sauf que cette fois le bloc reste fixe à sa
position, même si on descend plus bas dans la page.
Code : CSS - Sélectionner | element
{
position: fixed;
right: 0px;
bottom: 0px;
}
|
Essayez le résultat, vous verrez que le menu reste dans le cas présent
affiché en bas à droite même si on descend plus bas dans la page.
Le positionnement relatif
Le positionnement relatif est un petit peu plus délicat à utiliser. Ce
positionnement permet d'effectuer des "ajustements" : l'élément est
décalé par rapport à sa position initiale.
Prenons par exemple un texte important, situé entre 2 balises
<strong>. Pour commencer, je le mets sur fond rouge pour qu'on puisse mieux le repérer :
Code : CSS - Sélectionner | strong
{
background-color: red; /* Fond rouge */
color: yellow; /* Texte de couleur jaune */
}
|
Cette fois, le schéma que je vous ai montré tout à l'heure pour les
positions absolue et fixe ne marche plus. Pourquoi ? Parce que l'origine
a changé : le point de coordonnées (0, 0) ne se trouve plus en haut à
gauche de votre fenêtre comme c'était le cas tout à l'heure. Non, cette
fois l'origine se trouve en haut à gauche... de la position actuelle de
votre élément.
Tordu n'est-ce pas ? C'est le principe de la position relative. Ce
schéma devrait vous aider à comprendre où se trouve l'origine des points
:
Donc, si vous faites un
position: relative; et que vous appliquez une des propriétés
top,
left,
right ou
bottom, le texte sur fond rouge va se déplacer par rapport à la position où il se trouve.
Prenons un exemple : je veux que mon texte se décale de 55 pixels vers
la droite et de 10 pixels vers le bas. Je vais donc demander à ce qu'il
soit décalé de 55 pixels par rapport au "bord gauche", et de 10 pixels
par rapport au "bord haut" :
Code : CSS - Sélectionner | strong
{
background-color: red;
color: yellow;
position: relative;
left: 55px;
top: 10px;
}
|
Le texte s'est alors décalé par rapport à sa position initiale, comme ceci :