2010-12-15 42 views
2
de div

J'ai environ 10 div de largeurs égales de mais différentes hauteurs et je veux qu'ils emboîtent le plus serré possible.alignement vertical du float: left

Lorsqu'il est réglé sur le flotteur gauche, ils ne sont pas alignés les uns aux autres verticalement mais sont alignés au fond de la « ligne » ci-dessus.

Je suis moqué un peu exemple ci-dessous et que vous souhaitez pour se débarrasser de l'espace blanc. Avez-vous des suggestions. Je suis limité à l'utilisation de ce format car le contenu est fourni en externe.

Vive

<div style="width:500px;"> 
<div style="display:block; width:250px; height:100px; background-color:#333; float:left;"></div> 
<div style="display:block; width:250px; height:180px; background-color:#888; float:left;"></div> 
<div style="display:block; width:250px; height:130px; background-color:#354689; float:left;"></div> 
<div style="display:block; width:250px; height:90px; background-color:#181; float:left;"></div> 
</div> 

Répondre

1

Essayez flottant le premier à gauche, puis à droite suivante, la suivante à gauche, et la suivante à droite ....

EDIT - En réponse aux commentaires. Si vous connaissez le nombre maximum de span que vous pourrez toujours aller chercher (et en supposant que ce n'est pas beaucoup plus que les 10 que vous avez indiqué (car cette méthode pourrait devenir très en désordre très rapidement), et en supposant que CSS3 n'est pas une option vous pouvez essayer quelque chose comme ça,

<style> 
    span, /* all spans get display and width, odd spans get float:left */ 
    span+span+span, 
    span+span+span+span+span, 
    span+span+span+span+span+span+span { 
     display:block; 
     width:250px; 
     float:left; 
    } 

    span+span, /* even spans get float:right */ 
    span+span+span+span, 
    span+span+span+span+span+span, 
    span+span+span+span+span+span+span+span { 
     float:right; 
    } 
</style> 

vous auriez besoin de continuer à ajouter span+span+... « s jusqu'à ce que vous avez atteint le nombre maximum de consécutifs que vous aurez jamais. la question correspond à seulement huit. donc, ce n'est pas plus jolie méthode!

+0

Merci pour la réponse. Y at-il un moyen d'alterner cela en utilisant uniquement css? Malheureusement, je suis incapable de modifier le contenu, l'identifiant ou la classe une fois qu'il est livré. – Tom

+0

Lorsque vous le récupérez, est-ce que c'est dans votre exemple avec les styles appliqués? et, Quels ID et classes sont sur chaque div? – tjm

+1

Lorsque les données sont récupérées, il est effectivement arrivé que: Contenu - pas exactement un format pratique :( – Tom

0

Votre scénario pourrait utiliser plus de précisions.

S'ils ont toujours la même hauteur, vous pouvez coder en dur leur disposition. Pour fixer votre mockup:

<div style="width:500px;"> 
<div style="display:block; width:250px; height:100px; background-color:#333; float:left;"></div> 
<div style="display:block; width:250px; height:180px; background-color:#888; float:left;"></div> 
<div style="display:block; width:250px; height:130px; background-color:#354689; float:left; margin-top: -80px;"></div> 
<div style="display:block; width:250px; height:90px; background-color:#181; float:left;"></div> 
</div> 

Mais c'est assez évident et probablement ne vous aide pas parce qu'ils ont probablement hauteurs indeterminably aléatoires. Dans ce cas, comme ils ont toujours la même largeur et que vous en avez toujours 10, vous pouvez les grouper en empilements verticaux de 3 ou 4, puis faire coïncider chaque pile les uns avec les autres.

<div style="width:250px; float:left;"> 
<div style="display:block; width:250px; height:100px; background-color:#333; float:left;"></div> 
<div style="display:block; width:250px; height:180px; background-color:#888; float:left;"></div> 
<div style="display:block; width:250px; height:130px; background-color:#354689; float:left;"></div> 
</div> 
<div style="width:250px; float:left;"> 
<div style="display:block; width:250px; height:90px; background-color:#181; float:left;"></div> 
<div style="display:block; width:250px; height:180px; background-color:red; float:left;"></div> 
<div style="display:block; width:250px; height:100px; background-color:#333; float:left;"></div> 
</div> 
<div style="width:250px; float:left;"> 
<div style="display:block; width:250px; height:80px; background-color:#333; float:left;"></div> 
<div style="display:block; width:250px; height:140px; background-color:#888; float:left;"></div> 
<div style="display:block; width:250px; height:160px; background-color:#354689; float:left;"></div> 
</div> 
+0

Une approche multi-colonnes serait la meilleure. Il y a des correctifs javascript pour les navigateurs qui ne supportent pas le css3 requis. http: //www.alistapart.com/articles/css3multicolumn Tout dépend de OP veut que les divs à remplir de gauche à droite ou de haut en bas. – Keyo