Foros del Web » Creando para Internet » HTML »

positionar thead siempre arriba de tbody

Estas en el tema de positionar thead siempre arriba de tbody en el foro de HTML en Foros del Web. Hola a todos, Combinando 2 plugins de jquery, me encontré con un problema un tanto dificil de solventar. Teniendo estos estilos (definidos por los plugins) ...
  #1 (permalink)  
Antiguo 29/09/2012, 15:41
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
positionar thead siempre arriba de tbody

Hola a todos,

Combinando 2 plugins de jquery, me encontré con un problema un tanto dificil de solventar.
Teniendo estos estilos (definidos por los plugins)
Código Javascript:
Ver original
  1. tbody{
  2.   position:absolute;
  3.   left:0;
  4.   top:0;
  5. };
  6. table{
  7.   position:relative;
  8. }
El problema es simple el tbody se superposiciona sobre el thead, ya intente poner thead en absolute pero no resuelve nada.
El tbody necesita esos styles para uso de uno de los plugins.
Tambien debo hacer uso de table, thead, tbody para el otro plugin.
Lo que desearia es ubicar el tbody por debajo del thead.
Alguna idea?
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 30/09/2012, 08:23
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: positionar thead siempre arriba de tbody

Cita:
Lo que desearia es ubicar el tbody por debajo del thead.
Pero ese es el orden natural. Distinto si dijeras que querés posicionar el thead por debajo del tbody

Ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. thead {
  8. color:green;
  9. position:absolute;
  10. left:0;
  11. top: 60px;
  12. }
  13. tbody {color:blue;
  14. position:absolute;
  15. left:0;
  16. top:0;
  17. }
  18. tfoot {color:red;
  19. position:absolute;
  20. left:0;
  21. top:200px;
  22. }  
  23.  
  24. td, th{
  25. border: solid 1px #000;
  26. }
  27.  
  28.  
  29.  
  30. </head>
  31.  
  32.   <thead>
  33.     <tr>
  34.       <th>Código</th>
  35.       <th>Valor</th>
  36.     </tr>
  37.   </thead>
  38.   <tfoot>
  39.     <tr>
  40.       <td>A+B</td>
  41.       <td>3</td>
  42.     </tr>
  43.   </tfoot>
  44.   <tbody>
  45.     <tr>
  46.       <td>A</td>
  47.       <td>1</td>
  48.     </tr>
  49.     <tr>
  50.       <td>B</td>
  51.       <td>2</td>
  52.     </tr>
  53.   </tbody>
  54. </body>
  55. </html>

o incluso automatizarlo, si no conocés el alto que te va a ocupar el tbody, pero eso ya sería con javascript, ejemplo

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. thead {
  8. color:green;
  9. position:absolute;
  10. left:0;
  11. }
  12. tbody {color:blue;
  13. position:absolute;
  14. left:0;
  15. top:0;
  16. }
  17. tfoot {color:red;
  18. position:absolute;
  19. left:0;
  20. top:200px;
  21. }  
  22.  
  23. td, th{
  24. border: solid 1px #000;
  25. }
  26.  
  27.  
  28.  
  29. </head>
  30.  
  31.   <thead id="the">
  32.     <tr>
  33.       <th>Código</th>
  34.       <th>Valor</th>
  35.     </tr>
  36.   </thead>
  37.   <tfoot>
  38.     <tr>
  39.       <td>A+B</td>
  40.       <td>3</td>
  41.     </tr>
  42.   </tfoot>
  43.   <tbody id="tb">
  44.     <tr>
  45.       <td>A</td>
  46.       <td>1</td>
  47.     </tr>
  48.     <tr>
  49.       <td>B</td>
  50.       <td>2</td>
  51.     </tr>
  52.   </tbody>
  53. <script type="text/javascript">
  54. //<![CDATA[
  55. var Htbody =document.getElementById("tb").offsetHeight;
  56. var alto = Htbody+50;
  57. document.getElementById("the").style.top = alto +'px';
  58. //]]>
  59. </body>
  60. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 30/09/2012, 09:16
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: positionar thead siempre arriba de tbody

mmm esto me dió una idea. poner al thead en absolute, y darle un top negativo (-100px) y por ende ubicarlo por encima del tbody con top 0, el cual solo varia siempre en un rango entre 0 y los positivos.

Pero me surgió otra duda, como un plugin necesita aplicar overflow:hidden al div contenedor de toda la table, el thead queda arriba por fuera del container y oculto =\
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 30/09/2012, 10:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: positionar thead siempre arriba de tbody

Cita:
Iniciado por doylelives Ver Mensaje
mmm esto me dió una idea. poner al thead en absolute, y darle un top negativo (-100px) y por ende ubicarlo por encima del tbody con top 0, el cual solo varia siempre en un rango entre 0 y los positivos.

Pero me surgió otra duda, como un plugin necesita aplicar overflow:hidden al div contenedor de toda la table, el thead queda arriba por fuera del container y oculto =\
Siendo este el posicionamiento por defecto

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>tbody</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. thead {color:green}
  9. tbody {color:blue;}
  10. tfoot {color:red;}
  11. /*]]>*/
  12. </head>
  13. <table border="1">
  14. <tr>
  15. <th>thead</th>
  16. <th>thead</th>
  17. </tr>
  18. <tr>
  19. <td>tfoot</td>
  20. <td>tfoot</td>
  21. </tr>
  22. <tr>
  23. <td>tbody - por defecto se ubica debajo del thead y sobre el tfoot</td>
  24. <td>tbody - por defecto se ubica debajo del thead y sobre el tfoot</td>
  25. </tr>
  26. <tr>
  27. <td>tbody</td>
  28. <td>tbody</td>
  29. </tr>
  30. </body>
  31. </html>

sigo sin entender el objetivo final de tu planteo.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 30/09/2012, 11:15
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: positionar thead siempre arriba de tbody

Son condiciones a respetar para usar 2 plugins de jquery (datatables y otro de vertical scrolling).
el container me especifica el area donde el scrolling actua(height:60px) y su visibilidad (overflow:hidden), el scrolling solo debe mover el contenido del tbody, no el thead.
Como ves a continuacion el thead desaparece fuera del container.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>tbody</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8. thead {
  9.     color:green;
  10.     position:absolute;
  11.     top:-13px;
  12. }
  13. tbody {
  14.     color:blue;
  15.     position:absolute;
  16.     top:0;/*este valor varia de 0 a positivos, por medio de un plugin*/
  17. }
  18. tfoot {color:red;}
  19. .container {
  20.     margin-top:100px;
  21.     position:relative;
  22.     overflow:hidden;
  23.     height:60px;
  24. }
  25. /*]]>*/
  26. </head>
  27. <div class="container">
  28. <table border="1">
  29. <tr>
  30. <th>thead</th>
  31. <th>thead</th>
  32. </tr>
  33.  
  34. <tr>
  35. <td>tbody - por defecto se ubica debajo del thead y sobre el tfoot</td>
  36. <td>tbody - por defecto se ubica debajo del thead y sobre el tfoot</td>
  37. </tr>
  38. <tr>
  39. <td>tbody</td>
  40. <td>tbody</td>
  41. </tr>
  42. </body>
  43. </div>
  44. </html>
__________________
I am Doyle please insert code.
  #6 (permalink)  
Antiguo 30/09/2012, 11:39
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: positionar thead siempre arriba de tbody

supongo que habría que ver todo el conjunto para notar el problema.
Estuve viendo el plugin dataTables y veo que tiene opciones para scrolling en la tabla, ¿para que un plugin adicional?

No sé si te sirva, pero a veces trabajo con esto
http://foros.emprear.com/html/tabla_con_scroll/
se que no es lo mismo, pero quizás puedas extraer algo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: arriba, siempre, tbody
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:04.