2010-04-13 18 views
5

Recientemente me encontré con una implementación tabla compleja, por ejemplo:¿Cómo construir una tabla compleja usando CSS?

tr1: | td1 | td2 | td3 | 
tr2: | th | td | 
tr3: | th | td | 
... 

Como muestra este ejemplo, quiero dv1 y TD3 son de ancho fijo, td y TD2 se auto ancho para expandirse cuando la pantalla-radio/browser- ancho cambiado Me pregunto si hay una forma de hacerlo usando CSS.

Para que quede claro, ya usé el valor de colspan y ancho para mi propósito, pero ¿cómo puedo hacer que td1 sea más pequeño que th usando colspan y el valor de ancho? colspan no funciona, ni valor de ancho

Respuesta

6

Es una simple cuestión de ajustar las colspans correctamente.

Fila de encabezado de tabla: cada celda obtiene un grupo de 2 (3 celdas * 2 colspan = 6 celdas de colspan).
Filas del cuerpo de la tabla: cada celda obtiene un grupo de 3 (2 células * 3 colspan = 6 células colspan).

ACTUALIZACIÓN

Parece que hay una incongruencia que implica columnas que tiene tanto colspan y el conjunto de la anchura. Los navegadores parecen ignorar el valor del ancho e incluso el ancho máximo (el ancho mínimo funciona).

Ejemplo:

<table border="1" style="width: 50%;"> 
    <tr> 
     <td style="width: 100px;">td1</td> 
     <td colspan="2">td2</td> 
     <td style="width: 100px;">td3</td> 
    </tr> 
    <tr> 
     <th colspan="2" style="min-width: 120px; max-width: 120px; width: 120px;">th1</th> 
     <td colspan="2">td2</td> 
    </tr> 
    <tr> 
     <th colspan="2" style="min-width: 120px; max-width: 120px; width: 120px;">th1</th> 
     <td colspan="2">td2</td> 
    </tr> 
</table> 

Esto produce más o menos la salida deseada pero el Th1 columna º expande para que coincida con el mismo tamaño de la td siguiente (TD2). Ambos siempre ocupan el 50% de la tabla, a menos que la tabla sea más pequeña que 240px, luego th1 permanece a 120px.

Esto me parece inconsistente y no tengo solución alternativa, lo mejor es que compruebe si puede mostrar la tabla de manera diferente (es decir, el mismo número de columnas en todas las filas, incluido el encabezado (lo cual tendría más sentido de todos modos).

+0

Umm, ¿no quieres decir 2 y 3, no 3 y 4? – animuson

+0

Debe ser 2 y 3, pero buena idea. – Kobi

+0

aprendí mucho de su respuesta, pero al intentarlo, las td1 (en realidad td1 y ths, solo actualizan mi pregunta) siempre se mantienen igual, ¿es diferente en th? – Edward

2

Si no especifica un ancho para td su ancho aumentará automáticamente según el contenido del mismo. Además, puede usar el colspan para ecualizar td según lo que desee ...

3

De ese ejemplo limitado, me parece que necesita dos tablas.

Uno para la fila superior (establecer explícitamente el ancho de TD1, TD3, y toda la tabla. Deje TD2 Expansión automática.

y otro para el resto de la mesa ... formato de ella lo que quieras, acaba de establecer el ancho de la tabla a la misma que la fila superior por lo que se ve como una tabla. es probable que tenga que ajustar los márgenes 0/relleno.

Eso, o se puede hacer que sea una mesa y hacer algo colspan hackeo.

+0

sí lo hice uso colspan en TR3 TR2 ..., pero td1 de ellos se mantienen igual de ancho a pesar del valor de ancho, y me pregunto si hago td1 de tr1 ancho corregido con éxito, ¿seguirá funcionando el colspan aplicado en td2 de tr2/tr3? – Edward

0

Todas las celdas de una columna tienen el mismo ancho. Para que las celdas se extiendan sobre varias columnas, use el colspan atributo. Todas las celdas combinadas se expandirán para ocupar todo el ancho de la tabla.

3

Pruebe estos colspans:

tr1: | td1(1) | td2(2) | td3(1) | 
tr2: | td1(2) | td2(2)  | 
tr3: | td1(2) | td2(2)  | 
... 
+0

acabo de intentar, pero td1 siempre se mantienen en el mismo ancho, por cierto, td1 de tr2 tr3 son en realidad th, acabo de actualizar mi pregunta – Edward

+1

Con eso en mente, me pregunto si estás usando la construcción correcta para lo que sea ' Estoy tratando de hacer. No tiene demasiado sentido tener TH en la columna 1 a veces y TD en la columna 1 otras veces. ¿Puedes dar un ejemplo del tipo de datos que intentas presentar? ¿DD, DT, DL sería más apropiado, por ejemplo? http://www.benmeadowcroft.com/webdev/articles/definition-lists.shtml – pdr

+0

no a veces, solo la primera fila de la tabla tiene múltiples td en línea, otras filas son las mismas que . Este problema es realmente un dolor de cabeza para mí, simplemente me di por vencido para usar múltiples td en la primera fila, en cambio con múltiples divs, lo que parece que resolverá mi problema – Edward

Cuestiones relacionadas