2012-09-07 16 views

Respuesta

9

Ahh, viejo problema de la misma altura de la columna.

Una solución es hacer un pedo con margen/relleno inferior.

Obras en IE7 + (incluso podría funcionar usando IE6, no tengo instalado)

ul { 
    overflow: hidden; 
    border: 1px solid black; 
    float: left; 
} 
li { 
    float:left; 
    width:100px; 
    background: red; 
    padding-bottom: 10000px; 
    margin-bottom: -10000px; 
} 
li + li { 
    border-left: 1px solid black; 
} 

JSfiddle Demo

+0

Es una buena solución para el color de fondo pero el borde. – emphaticsunshine

+0

¿Qué pasa con el borde? – Matthew

+0

No tienen la misma altura ... esta ilusión probablemente decepcione a las personas que buscan una solución real a la misma altura. – vsync

20

Parece que está buscando un diseño tabular, por lo que quizás la mejor opción sea utilizar <table> en lugar de elementos flotantes <li>.

Dicho esto, también puede especificar estilos de tablas en sus elementos:

ul { 
    display: table-row; 
} 

li { 
    width: 100px; 
    border: 1px solid black; 
    display: table-cell; 
} 

Esto debería funcionar en la mayoría de los navegadores modernos. Encontrará un violín actualizado here.

+0

Esto funcionará en IE8 y superior más todos los navegadores modernos. – Mark

+2

Usaría la tabla en ese caso. – emphaticsunshine

+0

@emphaticsunshine, si su contenido es intrínsecamente tabular, debería hacerlo. Se han abusado de las tablas para el diseño en el pasado, aún así no hay vergüenza en usarlas cuando las necesite. –

0

Depende de qué que ellos quieren la misma altura: lo efecto general ¿estás tratando de lograr?

Una opción: Si usted es simplemente tratando de coincidir con un fondo o algo así, se puede poner el fondo en el lugar de los <ul><li> 's y el <ul> se expandirá automáticamente a cualquiera que sea la altura máxima es de sus elementos secundarios .

Además, si usted está tratando de hacer que la misma altura para que pueda alinear la parte inferior del texto, se pueden combinar display: inline-block en lugar de float y horizontal-align: bottom;. El resultado en este Fiddle le ofrece algo que al menos parece como el <li> tienen la misma altura, pero no funcionarán para los bordes.

+1

Necesito un borde de separación. Entonces, si doy el borde a uno de los elementos de la lista y es más corto, la separación no llegará al fondo – emphaticsunshine

+0

En ese caso, creo que definitivamente querrá ir con las sugerencias de Matthew o Frédéric Hamidi, que son mucho más sofisticado que el mío. :-) – XML

1

que puede utilizar: display: inline-table en sus elementos LI

li { 
    width:100px; 
    background: red; 
    display: inline-table 
} 

aquí es JSFiddle

+0

Wow, esto es seguro haciendo el truco. La más simple. – Emerald

0

utilizo biblioteca jquery.matchHeight.js para este propósito. Adición de class = "frame-altura" a todos elementos li, hacer toda li elementos la misma altura que la más alta li elemento.

0

La lista se establece como una tabla y contendrá las propiedades de la tabla. para el elemento de la lista cuando establece la celda de tabla obtendrán propiedades de celda de la tabla y de forma predeterminada todas las celdas de la tabla obtendrán la misma altura.

<!--SCSS--> 
.list { 
    display: table; 

    .list-item { 
     display: table-cell; 
    } 
} 



<!--html--> 
<ul class="list"> 
    <li class="list-iteam"> 
     <h1>Heading</h1> 
     <p>Details in text</p> 
    </li> 
    <li class="list-iteam"> 
     <h1>Heading 2</h1> 
    </li> 
    <li class="list-iteam"> 
     <h1>Heading 2</h1> 
     <p>this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text this is text </p> 
    </li> 
</ul> 
+0

Por favor, edite su respuesta y publique algunas explicaciones a su código. Se desaconsejan las respuestas de solo código. – WebDevBooster

Cuestiones relacionadas