2009-09-07 6 views
1

J'ai deux colonnes et je veux empiler des divs de différentes hauteurs dans l'ordre d'apparition.Comment puis-je empiler chronologiquement différentes divs de hauteur dans deux colonnes?

Les divs sont créés dynamiquement.

J'ai essayé de faire cela en faisant flotter le premier étage à gauche et le second à droite, mais ils semblent toujours être des anomalies.

Jetez un oeil à cette démo, il devrait tout expliquer.

http://dl.getdropbox.com/u/142343/divstack.html

+2

La page en ligne est idéale pour un test rapide avec Firebug, mais vous ne pourriez pas le garder pour toujours. Fournissez le code dans la question ou insérez au moins une image avec votre problème pour référence ultérieure. –

Répondre

0

Essayez d'utiliser "clear: left" pour flottaient à gauche et "claire: droite" pour flottaient à droite.

Vous ne pouvez pas créer deux colonnes sans espace vide entre avec cette structure HTML.

Si vous voulez deux colonnes sans espace vide, vous devez générer différents éléments de structure - placer des éléments impairs dans une colonne et même dans d'autres.

+0

il semble y avoir une certaine traction à votre suggestion, mais ils ne sont toujours pas pile pile. http://dl.getdropbox.com/u/142343/divstack.html –

0

Placez-les dans un tableau avec deux cellules. (Oui, oui, la flamme loin!)

Ajouté: Pour clarifier: ce que je voulais dire ceci:

<table> 
    <tr> 
     <td> 
      <div>First DIV</div> 
      <div>Third DIV</div> 
      <div>Fifth DIV</div> 
     </td> 
     <td> 
      <div>Second DIV</div> 
      <div>Fourth DIV</div> 
      <div>Sixth DIV</div> 
     </td> 
    </tr> 
</table> 

Throw dans certains paramètres de largeur et de rembourrage, et vous aurez deux piles peu soignées . Maintenant, en regardant vos exemples, je pense que j'ai réalisé autre chose pour le moment. Vous voulez que les <div> s'organisent automatiquement de manière à ce que les deux piles aient la même taille que possible. Je ne pense pas que ce soit possible. Eh bien, vous pouvez essayer de les restituer, puis vérifier leurs hauteurs avec JS, et les réorganiser ... mais cela provoquera des scintillements désagréables dans le navigateur.

Ajouté 2: Vérifiez le lien: http://valts.21.lv/problem/DivStack.html

+0

Cela ne me dérange pas de le mettre dans une table, mais si je le fais, ils ne seront pas empiler correctement ou je Je ne peux pas garder ma commande. –

+0

Je ne vous suis pas ... vous dites que les DIV sont générées dynamiquement (javascript). Donc, quand vous les générez, pourquoi ne pas ajouter une instruction IF supplémentaire qui détermine dans quelle colonne il doit aller? En fait, comment sont-ils triés dans les deux colonnes de toute façon? –

+0

ok, donc le contenu est extrait d'une base de données, et voilla, nous avons 10 lignes.(Php) donc créer la table, et de mettre la première case dans la première et la deuxième case dans la seconde , alors je dois créer une autre ligne, et 3ème case dans la première etc etc. Cette volonté ne pas laisser les boîtes empiler proprement –

1

Je ne sais pas si cela est l'effet désiré que vous allez pour, mais essayez d'utiliser

.left { 
    float:left; 
    clear:both; 
} 
.right { 
    float:left; 
} 

que votre CSS gauche et à droite

+0

Si j'ajoute ce que vous suggérez, les cases de chaque colonne ne s'empilent pas correctement. Ils ont des espaces verticaux massifs entre eux. –

+0

+1 cela devrait le faire. @IbnDrupal avez-vous modifié votre page d'exemple pour que nous puissions la voir? – jeroen

+0

Ce n'est pas tout à fait clair pour moi ce que vous attendez du résultat. Alternativement, vous pouvez changer le clear: à la fois pour un clear: left et le .right pour un float: juste pour un comportement d'empilement légèrement différent avec moins d'espace vertical (mais pas toujours aligné sur le dessus). Si vous pouvez fournir plus de détails sur la façon dont vous souhaitez l'empiler, je peux probablement vous aider davantage. – tschaible

Questions connexes