Récemment, je regardais le code d'un site Web et j'ai vu que chacun <div>
avait une classe clearfix
.
Après une recherche rapide sur Google, j'ai appris qu'il est pour IE6 parfois, mais ce qui en fait est un clearfix?
Pourriez-vous fournir quelques exemples d'une mise en page avec un clearfix, par rapport à une mise en page sans clearfix?
div
se développera complètement à la bonne hauteur pour enfermer ses enfants flottants. webtoolkit.info/css-clearfix.htmlRéponses:
Si vous n'avez pas besoin de prendre en charge IE9 ou une version antérieure, vous pouvez utiliser Flexbox librement et vous n'avez pas besoin d'utiliser des dispositions flottantes.
Il convient de noter qu'aujourd'hui, l'utilisation d'éléments flottants pour la mise en page est de plus en plus découragée par l'utilisation de meilleures alternatives.
display: inline-block
- MeilleurFlexbox est pris en charge par Firefox 18, Chrome 21, Opera 12.10 et Internet Explorer 10, Safari 6.1 (y compris Mobile Safari) et le navigateur par défaut d'Android 4.4.
Pour une liste détaillée des navigateurs, voir: https://caniuse.com/flexbox .
(Peut-être qu'une fois que sa position est complètement établie, ce peut être la façon absolument recommandée de disposer les éléments.)
Un clearfix est un moyen pour un élément d' effacer automatiquement ses éléments enfants , de sorte que vous n'avez pas besoin d'ajouter de balisage supplémentaire. Il est généralement utilisé dans les dispositions flottantes où les éléments flottent pour être empilés horizontalement.
Le clearfix est un moyen de lutter contre le problème des conteneurs de hauteur nulle pour les éléments flottants
Un clearfix est effectué comme suit:
Ou, si vous n'avez pas besoin du support IE <8, ce qui suit est très bien aussi:
Normalement, vous devez faire quelque chose comme suit:
Avec clearfix, vous n'avez besoin que des éléments suivants:
Lisez à ce sujet dans cet article - par Chris Coyer @ CSS-Tricks
la source
content: "\00A0";
les \ 00A0 représentent un espace blanc, un simple espace blanc ne fonctionne pas bien :) désolé. :)display: inline-block
mieux que les flottants pour une disposition basée sur des blocs. Les blocs en ligne sont, comme leur nom l'indique, disposés en ligne - la plupart des dispositions sont basées sur des blocs et le fait de disposer ces blocs dans un contexte de formatage en ligne n'a tout simplement aucun sens. Vous devez également faire face à divers problèmes associés à la mise en forme en ligne, tels que les espaces blancs inter-éléments, d'autres éléments en ligne, le dimensionnement, l'alignement, etc., comme beaucoup d'autres l'ont souligné. Certes, les dispositions flottantes n'ont pas beaucoup de sens non plus, mais au moins les flotteurs ont l'avantage d'être basés sur des blocs.Les autres réponses sont correctes. Mais je veux ajouter que c'est une relique de l'époque où les gens apprenaient le CSS pour la première fois et abusaient
float
de faire toute leur mise en page.float
est censé faire des choses comme des images flottantes à côté de longues séries de texte, mais beaucoup de gens l'ont utilisé comme mécanisme de mise en page principal. Comme il n'était pas vraiment destiné à cela, vous avez besoin de hacks comme "clearfix" pour le faire fonctionner.Ces jours-ci
display: inline-block
sont une alternative solide ( sauf pour IE6 et IE7 ), bien que les navigateurs plus modernes proposent des mécanismes de mise en page encore plus utiles sous des noms tels que flexbox, mise en page de grille, etc.la source
inline-block
n'est pas une amélioration stricte par rapport aux flottants en raison du problème d'espacement entre blocs , où les espaces dans le code HTML se traduisent par des caractères d'espacement qui séparent les blocs.inline-block
nécessite ses propres solutions de contournement , tout commefloat
nécessite clearfix.Le
clearfix
permet à un conteneur d'envelopper ses enfants flottants. Sansclearfix
style ou équivalent, un conteneur ne s'enroule pas autour de ses enfants flottants et s'effondre, comme si ses enfants flottants étaient positionnés de manière absolue.Il existe plusieurs versions du clearfix, avec Nicolas Gallagher et Thierry Koblentz comme principaux auteurs.
Si vous souhaitez prendre en charge les anciens navigateurs, il est préférable d'utiliser ce correctif:
Dans SCSS, vous pouvez utiliser la technique suivante:
Si vous ne vous souciez pas de la prise en charge des anciens navigateurs, il existe une version plus courte:
la source
div
enrouler les éléments flottants? Pouvez-vous m'aider à le visualiser?Offrir une mise à jour sur la situation au T2 2017.
Une nouvelle propriété d'affichage CSS3 est disponible dans Firefox 53, Chrome 58 et Opera 45.
Vérifiez la disponibilité de n'importe quel navigateur ici: http://caniuse.com/#feat=flow-root
L'élément (avec une propriété d'affichage définie sur flow-root) génère une zone de conteneur de bloc et présente son contenu à l'aide de la disposition de flux. Il établit toujours un nouveau contexte de formatage de bloc pour son contenu.
Cela signifie que si vous utilisez une div parent contenant un ou plusieurs enfants flottants, cette propriété va garantir que le parent entoure tous ses enfants. Sans aucun besoin d'un hack clearfix. Sur tous les enfants, ni même sur un dernier élément factice (si vous utilisiez la variante clearfix avec: avant sur les derniers enfants).
la source
flow-root
est la vraie solution.Autrement dit, clearfix est un hack .
C'est une de ces choses laides avec lesquelles nous devons tous vivre, car c'est vraiment le seul moyen raisonnable de s'assurer que les éléments enfants flottants ne débordent pas leurs parents. Il existe d'autres schémas de mise en page, mais le flottement est trop courant dans la conception / développement Web aujourd'hui pour ignorer la valeur du piratage Clearfix.
Personnellement, je penche pour la solution Micro Clearfix (Nicolas Gallagher)
référence
la source
Une technique couramment utilisée dans les mises en page flottantes CSS consiste à affecter une poignée de propriétés CSS à un élément dont vous savez qu'il contiendra des éléments flottants. La technique, qui est généralement implémentée à l'aide d'une définition de classe appelée
clearfix
, (généralement) implémente les comportements CSS suivants:Le but de ces comportements combinés est de créer un conteneur
:after
l'élément actif contenant un seul '.' marqué comme caché, ce qui effacera tous les flotteurs préexistants et réinitialisera efficacement la page pour le prochain contenu.la source
L'autre option (et peut-être la plus simple) pour obtenir un clearfix est d'utiliser
overflow:hidden;
sur l'élément contenant. Par exempleBien sûr, cela ne peut être utilisé que dans les cas où vous ne souhaitez jamais que le contenu déborde.
la source
J'ai essayé la réponse acceptée mais j'ai toujours eu un problème avec l'alignement du contenu. L'ajout d'un sélecteur ": avant" comme indiqué ci-dessous a résolu le problème:
MOINS ci-dessus sera compilé en CSS ci-dessous:
la source
Voici une méthode différente même chose mais un peu différente
la différence est le point de contenu qui est remplacé par un
\00A0
==whitespace
Plus d'informations sur ce http://www.jqui.net/tips-tricks/css-clearfix/
En voici une version compacte ...
la source
.clearfix {...}
,html[xmlns] .clearfix {...}
,* html .clearfix {...}
Et.clearfix {...}
tout sélectionner la même chose et écraser les uns des autres. C'est un peu hacky et pas vraiment nécessaire.\00A0
, je pense que c'était à cause de la compatibilité croisée des navigateurs et de la connaissance de l'époque.