Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/11/2010, 05:27
My_lady
 
Fecha de Ingreso: marzo-2004
Mensajes: 35
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Cabecera fija en tabla con tablas anidadas

Tienes razón; aquí una versión reducida del código (es una tabla que recibe los datos por PHP, pero me limito al HTML como está ahora, aunque de manera esquemática):

Código:
<div class=fixedHeaderTable>
<table border=1 cellpadding=0 cellspacing=0 width=100%>
<thead class=fixedHeader>
<tr>
<th>ENCABEZADO1</th>
<th>ENCABEZADO2</th>
...
<th>ENCABEZADO9</th>
</tr>
</thead>

<tbody>
<tr>
<td>FILANORMAL1</td>
<td>FILANORMAL2</td>
<td>FILANORMAL3</td>
<td>FILANORMAL4</td>
<td>TABLA1(1COLUMNA)</td>
<td>TABLA2(1COLUMNA)</td>
<td>TABLA3(1COLUMNA)</td>
<td>FILANORMAL5</td>
<td>FILANORMAL6</td>
</tr>
</tbody>

</table>
</div>
En cuanto a la CSS, es muy sencillita, parece ser (omito los apaños para IE):

Código:
div.fixedHeaderTable {
     position: relative;
}

div.fixedHeaderTable table {
     width:100%;
}

div.fixedHeaderTable tbody {
     height: 400px;
     overflow-y: auto;
     overflow-x: hidden;
}

div.fixedHeaderTable thead td, div.fixedHeaderTable thead th {
     position:relative;
}
Con esto consigo que el encabezado efectivamente se quede fijo y que aparezca la barra de desplazamiento deseada, pero las tablas internas heredan la altura de la tabla contenedora, y lo que quiero es que tengan la altura bien de la fila en que están insertadas, bien la necesaria para que muestren su contenido sin necesidad de desplazamiento. Para intentar solucionarlo he probado lo siguiente:

1º Asignar otro div class a las tablas anidadas (entiéndase: <td><div class = TablaNormal>TABLA</div></td>). Me permite asignar un estilo independiente pero no controlar la altura de la tabla, que es lo que me está causando problemas.

2º Cerrar la etiqueta div antes de insertar las tablas (infructuoso)

3º El código de http://www.imaputz.com/cssStuff/bigFourVersion.html, pero éste es mucho más complicado para mí, el problema sólo se me desplaza al ancho de las tablas anidadas, y además me conviene no tener que definir independientemente el ancho de las columnas, pues el número de columnas en la tabla puede variar.

Espero esto sirva para exponer más claramente mi problema.

Muchas gracias.