nav
flottant.article { margin-left:270px; }
La propriété float
est une des plus utilisées pour structurer une mise en page [ avant que n’arrivent flexbox et grid ], mais son usage est parfois délicat. Elle spécifie qu'un élément doit être retiré du flux normal et placé à la droite ou à la gauche du bloc qui le contient. Le texte et les éléments inline
adjacents se répartiront autour de lui.
Dans son usage le plus simple, la propriété float
permet d’habiller une image avec du texte :
ette jolie lettre ornée est l’œuvre de Joseph Apoux, peintre et illustrateur français de la fin du XIXe siècle proche du décadentisme (dixit wikipedia). Joseph Apoux étudie la peinture et le dessin avec Jean-Léon Gérôme. (…) On lui doit notamment cet Alphabet pornographique, dont est issu cette image, et qui grace à la propriété float
permet de créer une lettrine (notabene: la propriété p:first-letter
permettrait de le faire de manière plus élégante, et/ou sans utiliser d’image). Pour plus de typographie érotique, voir Max Bruinsma.
img { float:left; margin: 0 15px 0 -4px; }
/* la marge droite négative permet d’aligner *optiquement* l’image sur la colonne de texte */
En utilisant une boîte flottante, on peut ainsi créer deux colonnes :
nav
flottant.En juxtaposant des boîtes flottantes, on peut créer une mise en page en plusieurs colonnes régulières… [ mais il vaut mieux utiliser flex et grid ]
.col {
float:left;
width:20%;
}
…ou irrégulières :
.col { float:left; height:100px; }
.one { width:14.2857%;}
.two { width:28.5714%;}
.three { width:57.1429%;}
Un problème se pose cependant ; l’élément conteneur n’est plus affecté par l’élément flottant ( on l’a « sorti du flux »). L’élément flottant peut donc « dépasser » de son conteneur.
Pour résoudre ce problème, de multiples solutions s’offrent ; la plus simple est ce définir la propriété overflow
du conteneur avec la valeur auto
. Et quand ça ne suffit pas, il faut aller chercher dans le monde merveilleux du clearfix…
La propriété clear
sert à contraindre l’élément qui suit un élément flottant à passer en dessous. Les valeurs possibles de clear
sont left
, right
ou both
(c’est la valeur qu’on utilise le plus souvent).