La meilleure façon de “clear: both”
Pour longtemps, j'ai été en utilisant une classe CSS appelé clear
, qui a seulement la règle clear: both
. Je l'utilise de la façon suivante (montré dans Django-syntaxe, mais c'est sans importance):
{% for item in collection %}
<ul class="horiz"><!-- horizontal list -->
<li>{{ item }}</li>
<li>{{ item }}</li>
</ul>
<div class="clear"></div>
{% endfor %}
Comme vous pouvez le voir, je suis en train de faire un tas de listes horizontales, pour le faire paraître comme une table. Imaginez que la règle CSS .horiz li
implique float: left
. Note que je suis en utilisant <div class="clear"></div>
après chaque ligne de ce tableau, beaucoup de code HTML pour quelque chose de si simple.
Est-ce vraiment la voie à suivre? N'est-ce pas là, rien de plus simple que je n'en ai pas pensé?
- C'est un idiot de se poser la question, mais les choses que l'on pose sur la être considérées comme des données tabulaires?
- je sais que c'est fermé, mais ma réponse (juste googlé un problème similaire et trouvé cette page est un conteneur avec trop-plein automatique: quirksmode.org/css/clearing.html
Vous devez vous connecter pour publier un commentaire.
Est-il une raison pour laquelle vous ne pouvez pas utiliser...
... pour chaque liste, à l'exception de la première?
Il y a moyen de le faire en CSS
http://www.positioniseverything.net/easyclearing.html
Si vous voulez chacune des listes de montrer tout ce que est en eux, sans avoir à ajouter une plaque de
DIV
balise, vous pouvez ajuster laoverflow
propriété de la liste avec ceci:Maintenant, même si la liste des articles eux-mêmes sont flotté, le contenu de la liste devrait sans effondrement de la zone qu'ils ont peut-être le faire maintenant parce qu'ils sont décalés de flux.
Vous pouvez avoir votre
ul
avecoverflow: hidden;
. Ceci établit un nouveau bloc de mise en forme de contexte pour chaqueul
qui est exactement ce que vous voulez.J'ai utilisé pour
clear: both;
comme vous, mais une fois que j'ai découvert ce drôle de petit caprice, j'ai commencé à utiliser ce presque exclusivement. Il semble sémantiquement supérieur et fonctionne dans 99% des cas.Pourquoi ne pas donner à votre UL et votre LI des largeurs fixes, où la largeur de l'UL est au moins deux fois la largeur de la LI, mais moins de 3 fois la largeur d'un LI.
Ensuite, vous pouvez mettre tous vos LI dans un UL et de mettre un
float: left
sur la LI.Ce sera la cause de chaque élément de la liste apparaissent les uns à côté des autres, mais ils se terminera sur la ligne suivante quand ils sont à court de chambre (à cause de la largeur de l'UL).
Un autre avis. Vous pouvez utiliser clear:both en "pause" (
<br/>
)" tag. Pas besoin de code en div. Voir ci-dessousCodage en CSS:
À l'aide de HTML:
<br class="clear" />
Essayer!!!
La solution la plus évidente consiste à déplacer le
clear: both
à l'élément suivant dans votre mise en page. Si cetteul
est suivi par undiv
, donnerdiv
unclass="clear"
, etc.Mettre au clair sur la
ul
.Je suis d'accord avec Logesh Paul,
Son devenir de plus en plus simples à utiliser br au lieu de div.
mais je pense que vous devriez mettre l'élément clair à l'extérieur de la boucle.