2011-08-05 20 views
9

Jaki jest najlepszy sposób (bez js) na wyrównanie wszystkich komórek (tj. W tym przypadku trzy komórki na wiersz).Płyn CSS wyrównany na górze

HTML

<ul id="list"> 
    <li>Line1 this is a very long line that will break the layout</li> 
    <li>Line2</li> 
    <li>Line3</li> 
    <li>Line4 this is a very long line that will break the layout</li> 
    <li>Line5</li> 
    <li>Line6</li> 
    <li>Line7 this is a very long line that will break the layout</li> 
    <li>Line8</li> 
    <li>Line9</li> 
</ul> 

CSS

#list li{ 
    float: left; 
    width: 33%; 
    border: 1px #000 solid; 
} 

Wynik

enter image description here

Wszystko można zobaczyć w this Fiddle.

Liczba pozycji w linii może się zmienić (tzn. Nie wiem, gdzie rozpocznie się nowa linia), a wysokość każdej z nich jest zmienna (tj. Nie może wymusić wysokości).

Odpowiedz

0

nie jestem pewien, że to, co masz na myśli, ale są wyrównane:

#list li{ 
    float: left; 
    width: 33%; 
    border: 1px #000 solid; 
    min-height:40px; 
} 
+0

Niestety to mój problem. Tekst może się zmienić i przerwie układ. Zobacz http://jsfiddle.net/mctu7/3/ z twoją odpowiedzią. Linia 7 powinna znaleźć się pod linią 4. – montrealmike

0

Dodaj to do Twojego CSS:

display: inline-block; 
height: 3em; /* adjust to fit largest content in any of the blocks */ 

i zmniejszyć szerokość nieznacznie - obramowanie 1px jest dodawana do szerokości, więc kończysz z 100% + 6px, co oznacza, że ​​w każdym wierszu pojawiają się tylko 2 bloki.

0

Rozwiązanie flex-box:

#list { 
    display: flex; 
    flex-wrap: wrap; /*allows items to flow into a new row*/ 
} 
#list li { 
    width: 33%; 
    border: 1px #000 solid; 
} 

skutkuje:

enter image description here

demo: http://jsfiddle.net/xja40zod/2/