2010-01-31 10 views
8

Tengo dos columnas una al lado de la otra que son de diferentes colores. El fondo tiene un color único también. La columna de la derecha contiene texto que se expandirá a una altura desconocida. La otra columna contiene poco o nada.CSS alternativo a este código CSS-jQuery?

<div id="container"> 
    <div id="leftColumn"> 
     <p>Only one small paragraph here</p> 
    </div> 

    <div id="rightColumn"> 
     <p>Many large paragraphs inside here.</p> 
    </div> 
</div> 

Me gustaría que la columna de la izquierda sea la altura exacta de la columna de la derecha.

Aquí está la CSS ...

#leftColumn { 
    display:inline-block; 
    width: 200px; 
} 
#rightColumn { 
    display:inline-block; 
    width: 600px; 
    vertical-align: top; 
} 

Así que cuando se carga la página que utilizan jQuery para ajustar la altura de la columna de la izquierda en base a la altura de la columna de la derecha.

$(document).ready(function() { 
    $('#leftColumn').css('height', $('#rightColumn').innerHeight()); 
}); 

¿Hay alguna manera de hacer esto con solo CSS?

+0

CSS puede no ser la única herramienta para el trabajo cuando otras herramientas se prestan mejor a un probl em. Las tablas HTML no son malvadas; aunque pudieron haberse usado en exceso en el pasado antes de un buen soporte de CSS, las Tablas aún tienen su lugar.Cuando habla alturas iguales, las tablas lo tienen automáticamente y aún se pueden controlar a través de CSS, para una solución híbrida que utiliza lo mejor de ambos mundos. De lo contrario, puede complicarse rápidamente si se usa una herramienta para excluir a los demás por el simple hecho de hacerlo. –

+1

Luego, de nuevo, el autor solicitó una solución única de CSS, por lo que quizás tratar de hacer cumplir nuestros ideales con la exclusión de responder directamente la pregunta es trabajar en contra del proceso. –

Respuesta

4

Hay algunas otras maneras de lograr este diseño, además de utilizar Javascript.

métodos incluyen:

  • Uso de display:
  • columnas de imitación (imagen de fondo en el elemento padre) mesa en los elementos
  • Adición de múltiples contenedores div para cada fondo
  • Uso una mesa (no es muy popular por razones obvias)

Todos estos tienen diferentes ventajas, desventajas y cada uno presenta sus propios dolores de cabeza para el desarrollo del sitio. Yo votaría por el uso de columnas falsas porque mantiene el html más simple y es compatible con todos los navegadores.

lectura adicional:

+0

¿Cuáles son las desventajas de usar display: table on a div? –

+0

@Jitendra - IE 6/7 no es compatible con la pantalla: tabla. –

+0

Gracias por esa buena lista de opciones. Tendré que considerar qué es lo mejor para mi diseño. Las opciones tres parecen algo que podría funcionar bien. Las columnas falsas también se ven bien, pero no estoy seguro de si quiero lidiar con las diferencias del modelo de caja entre IE y otros navegadores. – user182666

0

se puede hacer fácilmente con <table>

+1

A menos que muestre datos tabulares, eso es Bad Idea (tm) – rossipedia

+0

Downvoted (lo siento) porque es un mal consejo. – metrobalderas

+3

@Bryan Ross - Hacer bucles en el aire para lograr algo con una herramienta simple y existente suele ser una mala idea en la programación. Además, los divs son incluso menos semánticos que las tablas. –

0

No estoy seguro de si hay una manera de CSS puro para hacer esto (tal vez en CSS3). Pero deberías leer este artículo y ver si funciona para ti.

http://www.alistapart.com/articles/fauxcolumns/

Si no es así, usted podría considerar esta técnica (que requiere una gran cantidad de marcas tonta).

http://matthewjamestaylor.com/blog/equal-height-columns-3-column.htm

+0

¿Por qué el voto a favor? ¿Qué diablos? – jessegavin

+0

+1 para el segundo enlace ... no tiene un montón de etiquetas tontas ... un div adicional de envoltura por columna .. –