qu'il contient ne sont plus dans le flux normal. Pour contourner ce problème on peut placer un troisième dont le but est d'étirer le bloc conteneur :
[html]
div acer {
clear: both;
}[/html]
La propriété "clear" permet de s'assurer qu'aucun élément n'ira se mettre à gauche ou à droite du
.
Cela dit, dans un tel exemple il n'est pas forcément utile de mettre les 2 éléments en flottants. Si on sait d'avance celui qui sera la plus long (et qui imposera sa hauteur au bloc conteneur), on peut le laisser dans le flux normal.
> [i]Les flottants sont donc un bon outil aussi bien pour placer des tableaux ou des illustrations le long des marges internes d'un texte que pour créer une mise en page multi-colonnes.[/i]
Attention cependant certains navigateurs ont un peu de mal avec les flottants. C'est par exemple le cas d'Internet Explorer pour Windows qui a tendance avoir des bugs de ce genre :
- http://forum.hardware.fr/forum2.php3?post=27221&cat=10
- http://www.positioniseverything.net/floatmodel.html
- http://www.digital-web.com/features/feature_2003-02.shtml
[u]Le positionnement absolu[/u]
Un élément utilise le positionnement absolu lorsqu'il possède la propriété :
[css]position: absolute;[/css]
Le positionnement absolu permet de placer précisément, au pixel près, n'importe quel élément dans le document. Comme avec le positionnement relatif, on utilise "top", "bottom", "left" et "right" pour placer l'élément.
Le repère de coordonnées utilisé pour le positionnement est celui du bloc conteneur [b]positionné[/bJ'insiste sur le mot "positionné" car c'est une erreur fréquente. Un élément est positionné lorsqu'il possède la propriété "position" et que celle-ci vaut, "relative", "absolute" ou "fixed".
Un exemple pour mieux comprendre. Considérons le code suivant :
[html]
et :
body {
margin: 100px;
}
div#conteneur {
width: 400px;
height: 300px;
}
div#contenu {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 150px;
}[/html]
Le bloc "conteneur" n'est pas positionné. Le bloc "contenu" ne va donc pas se positionner par rapport à lui mais par rapport à l'élément racine. Il va donc se retrouver tout en haut à gauche :
[code] 0
0+-------+------------------+
| | |
|contenu|------+ |
+-------+ | |
| | | |
| | | |
| +-----------+ |
| conteneur |
| |
+--------------------------+[/code]
Si on ajoute à "conteneur" la propriété "position: relative", il devient alors positionné et "contenu" se place par rapport à lui :
[code] +--------------------------+
| 0 |
| 0+-------+---+ |
| | | | |
| |contenu| | |
| +-------+ | |
| +-----------+ |
| conteneur |
| |
+--------------------------+[/code]
Dès qu'un élément est placé absolument :
- il devient un élément de type boîte (bloc) ;
- il sort du flux normal.
> [i]Le positionnement absolu est l'arme absolue (sans jeu de mots) car on peut se permettre de construire n'importe quel type de mise en page avec, de la plus simple à la plus complexe. Pour les designs simples je conseille toutefois de privilégier les autres formes de positionnement.
Ce positionnement absolu présente toutefois un risque : celui que l'ordre de lecture des informations à l'écran ne reflète pas celle du document HTML. Etant donné que l'on peut placer les éléments n'importe où, rien n'empêcherait d'écrire dans le document HTML la conclusion d'un texte avant l'introduction et de rétablir l'ordre logique avec le positionnement absolu. Il est toujours bon de se demander comment apparaîtrait une page sans aucun style ou dans un navigateur texte car en terme d'accessibilité c'est un point important.[/i]
[u]Le positionnement fixe[/u]
Un élément utilise le positionnement fixe lorsqu'il possède la propriété :
[css]position: fixed;[/css]
Le positionnement fixe fonctionne comme le positionnement absolu sauf que l'élément ainsi positionné reste [u]attaché[/u] à la zone de visualisation.
Concrètement cela empêche les éléments de se déplacer lorsqu'on fait défiler la page avec les barres de défilement.
Pour les médias paginés (feuilles de papier, transparent...) l'élément est répété sur toutes lees pages.
> [i]Le positionnement fixe est idéal pour réaliser des menus fixes et donc se passer des frames. Un bon exemple se trouve sur le site du W3C pour les CSS : http://www.w3.org/Style/CSS/
Gros problème : Internet Explorer pour Windows ne supporte pas ce mode de positionnement, ce qui limite, hélas, considérablement son intérêt.[/i]
[u]Quelques liens pour aller plus loin[/u]
- http://www.brainjar.com/css/positioning/
- http://www.blogblues.com/standards/css/position.asp
- http://www.positioniseverything.net/
Merci à gm_superstar pour cet article