Bonjour,
Débutant et donc en autoformation (assistée par vous, merci), j’aimerais obtenir une explication théorique à ce qui suit :
Lorsqu'on fait flotter les <LI> d'un <UL> qui reste dans le flux normal, cet <UL> perd en quelque sorte sa hauteur, comme l'illustre le code ci-dessous.
Pièce jointe 42343
Soit une liste non ordonnée (<UL> + <LI>), qu’on décore graphiquement pour mettre les comportements en évidence :
<UL> avec bordure et couleur de fond, avec une largeur à 100%
<LI> avec texte en couleur et couleur de fond
- En flux normal, sans appliquer aucune propriété influençant le positionnement, les <LI> se placent dans la boîte définie par <UL> et celui-ci développe la hauteur nécessaire pour accueillir les <LI>.
- Si on fait flotter les <LI> sans positionner le <UL> qui reste donc dans le flux normal, celui-ci voit sa hauteur réduite à zéro et le cadre se réduit à une ligne, les <LI> apparaissant sous cette ligne. Normal, me direz-vous, puisqu’un flottant sort du flux normal et que « les boîtes de bloc non positionnées, créée avant et après elle, s’écoulent verticalement comme si celle-ci n’existait pas. » (point 9.5 Les flottants) Même s’il sort du flux normal, le flottant reste quand même confiné à son bloc conteneur, à sa boîte parent, et il suffit de réduire la largeur du <UL> pour voir les <LI> se déplacer vers le bas, sans dépasser la ligne qui représente le cadre écrasé du <UL>.
- Mais, si on fait également flotter le <UL>, les <LI> se replacent dans la boîte développée par ce <UL>, qui retrouve ainsi une hauteur.
En plus de ce comportement dont je ne parviens pas à trouver l’explication dans les spécifications CSS du W3C, comme on a défini une largeur à 100% pour le <UL>, si les blocs flottants, soit le <UL> d’une part et les <LI> d’autre part, étaient tout à fait indépendants les <LI> devraient se trouver en-dessous du <UL>, puisque les flottants « vont buter sur le bord du bloc conteneur ou sur le bord externe d’un autre flottant.. » et « quand il n’y a pas assez de place pour le flottant dans la largeur de la ligne, celui-ci se déplace vers le bas ».
Les <UL> et <LI> restent donc bien en interdépendance (ouf !), mais comment expliquer l’écrasement du <UL> lorsqu’on fait flotter les <LI> et la récupération de sa hauteur par le <UL> lorsqu’on le fait également flotter.
Qu'ai-je raté dans les références ?
Avec mes remerciements au « corps professoral »
Partager