2010-04-26 16 views
16

Mam html serwera generowane odczuwalna:UL + CSS dla układu siatki

<ul> 
    <li><!-- few nested elements that form a block --></li> 
    <li><!-- few nested elements that form anaother block --></li> 
    <li><!-- etc, X times --></li> 
</ul> 

Wszystkie bloki mają szerokość 200px znany i nieznany wysokość. Chcę <li> zostać umieszczone w tabeli podobny sposób jak poniżej:

alt text

Co mam teraz jest następujący CSS:

li { 
    display: block; 
    width: 200px; 
    float: left; 
    margin: 10px; 
} 

wszystko jest w porządku, poza tym, że kolumny nie uzyskać równe wysokość. A w przykładzie powyżej blok # 4 „wyrwać” na # 1, a wynik nie jest, co usiłuję osiągnąć:

alt text

Czy istnieje czystej CSS sposób cross-browser, który pozwoli siatkę układ chcę i nie wymuszam zmiany znaczników?

Odpowiedz

22

Inline blocks być może być tu przydatny.

+0

+1, ale umysł IE7, który dopuszcza tylko wbudowany blok dla naturalnie wbudowanych elementów. – ANeves

+1

Świetny link! Dokładnie to, czego potrzebuję. – nkrkv

+0

Najprawdopodobniej będziesz wtedy działał z problemami z wbudowaną białą przestrzenią. W takim przypadku spójrz na ten wątek na stronie doctype.com: http://doctype.com/csss-inlineblock-white-space-between-items – Boldewyn

0

Wariant 1: Daj im wyraźne wysokości

Opcje 2: Użyj nth-child (który ma ograniczone wsparcie)

4

W przykładzie wydaje się, chcą dać każdy wiersz taką samą wysokość największego Li w które rząd. Jeśli wysokość ta jest zmienna, co chcesz, jest możliwe tylko z n-dziecko:

li:nth-child(3n+0) { clear: left; } 
Powiązane problemy