2010-04-26 23 views
16

I tiene un html generado por el servidor como:UL + CSS para diseño de cuadrícula

<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> 

Todos los bloques han conocido anchura 200 px y la altura desconocido. Quiero <li> a estar dispuestos en manera de la tabla similar a la siguiente:

alt text

Lo que tengo por ahora está siguiendo css:

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

Todo está bien, excepto que las columnas no reciben igual altura. Y en el ejemplo anterior el bloque # 4 “arranque” en el # 1 y el resultado no es lo que estoy tratando de lograr:

alt text

¿Hay alguna forma pura-CSS multi-navegador que permitirá rejilla diseño ¿Quiero y no haré cumplir el cambio de marcado?

Respuesta

22

Inline blocks quizá podría ser útil aquí.

+0

+1, pero tenga en cuenta IE7, que solo permite el bloque en línea para elementos naturales en línea. – ANeves

+1

¡Buen enlace! Exactamente lo que necesito – nkrkv

+0

Lo más probable es que tenga problemas con el espacio en blanco en línea. En este caso, mira este hilo en doctype.com: http://doctype.com/csss-inlineblock-white-space-between-items – Boldewyn

0

Opción 1: Dales alturas explícitas

Opciones 2: Uso nth-child (que tiene un soporte limitado)

4

En su ejemplo que parece querer dar a cada fila de la misma altura de los más grandes li en ese fila. Si esta altura es variable lo que quiere es sólo es posible con nth-child:

li:nth-child(3n+0) { clear: left; } 
Cuestiones relacionadas