2010-02-21 5 views
0

J'ai ~ 170 petits éléments carrés dans un div, je voudrais qu'ils s'organisent en autant de lignes qu'ils ont besoin pour la largeur de la div (qui va changer avec la largeur de le navigateur).Lignes et colonnes automatiques avec CSS

<div id="container"> 
    <div class="sq"></div> 
    <div class="sq"></div> 
    <div class="sq"></div> 
</div> 

Je sais que je pouvais faire:

#container .sq { float:right; } 

avec un peu de rembourrage pour les faire recueillir sur le droit et le débordement lentement vers le bas - quelque chose comme ceci:

. . . . . . . 
. . . . . . . 
. . . . . . . 
     . . . . 

où chaque point est un sq élément, mais je veux vraiment quelque chose qui déborde vers le haut, donc ils ressembleraient à ceci:

 . . . . 
. . . . . . . 
. . . . . . . 
. . . . . . . 

ou comme celui-ci si le navigateur a été redimensionnée:

. . . . . . . 
. . . . . . . . . 
. . . . . . . . . 

Est-ce que quelqu'un a une idée si cela est possible en CSS?

+0

La taille de chaque 'div 'est-elle connue? – Eric

+0

Ce sera un% de la largeur de l'écran, donc pas explicitement (en CSS de toute façon) –

Répondre

2

La difficulté de mise en œuvre qui l'emporte probablement largement sur le désir du résultat. Vous pouvez être en mesure de le faire en utilisant JavaScript/jQuery mais je ne suis pas sûr que cela en vaille la peine?

+0

Je pense que vous avez probablement raison, HTML est fondamentalement de bas en haut dans la structure, javascript serait probablement le seul moyen et c'est sans doute trop pour l'effet! –

0

Dans IE8, vous pouvez dire -ms-writing-mode: rl-bt. Bien que writing-mode fasse partie du travail CSS3 Text Layout, cette valeur n'est pas incluse dans la spécification de brouillon pour le moment.

Sur tous les autres navigateurs, vous aurez besoin d'un script. Par exemple, si chaque .sq avait float: right;, vous pouvez ajouter clear: right à chaque nième élément à partir de la fin de la liste. (Où n est le nombre de carrés que vous calculez correspondra à la largeur.) Ou simplement float: left; et ajouter un margin-left au premier carré pour le pousser aussi loin vers la droite il doit être.

+0

Appréciez le conseil d'IE8 là, mais je vise le soutien de plusieurs navigateurs (comme je travaille sur un mac!) - Je pense que je trouverai une mise en page différente, car le script semble être exagéré. –