Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2016, 09:41
jmg1189
 
Fecha de Ingreso: septiembre-2015
Mensajes: 58
Antigüedad: 8 años, 8 meses
Puntos: 2
tablas de cabecera fija

Buen día a todos.


Bueno, la idea que quiero desarrollar es una tabla con una cabecera fija, PERO la idea no es ponerle fixed a la propiedad position de css3, ya que esto implica que no se puede mover ni vertical ni horizontalmente, y dado que la tabla que necesito manejar tiene bastantes columnas, necesito que la cabecera se mantenga fija al hacer scroll vertical, pero se pueda desplazar horizontalmente.

Gracias a dos funciones como éstas logré algo parecido a lo que necesito:

Código Javascript:
Ver original
  1. $(function(){
  2.             //detectar scroll hacia abajo
  3.             var obj = $('#contenedor');          //objeto sobre el que quiero detectar scroll
  4.             var obj_top = 0;  //scroll vertical inicial del objeto
  5.            
  6.             obj.scroll(function(){
  7.                 var obj_act_top = obj.scrollTop();  //obtener scroll top instantaneo
  8.                 if(obj_act_top > obj_top){
  9.                     //scroll hacia abajo
  10.                     $("#cabecera2").css({'position':'fixed' });//cambiar a la propiedad fixed cuando se haga scroll vertical
  11.                     $("#contenido2").css({'margin-top':'20px' });
  12.                     console.log('movimiento vertical: '+obj_act_top);
  13.                    
  14.                 }
  15.                 if(obj_act_top < obj_top){
  16.                     //scroll hacia arriba
  17.                     $("#cabecera2").css({'position':'absolute' });
  18.                     $("#contenido2").css({'margin-top':'20px' });
  19.                     console.log('movimiento vertical: '+obj_act_top);
  20.                 }
  21.                 obj_top = obj_act_top;
  22.                
  23.             });
  24.            
  25.            
  26.         });
  27.        
  28.         $(function(){  //me desplaza horizontalmente el contenedor de la cabecera que tiene propiedad fixed.
  29.             var lastPos = 0;
  30.             var objeto = $('#table_derecha');
  31.             objeto.scroll(function(){
  32.                 var obj_left = objeto.scrollLeft();
  33.                 if (obj_left > lastPos) {
  34.                     $("#cabecera2").css({'margin-left':-obj_left+'px' });
  35.                 }
  36.                 if (obj_left < lastPos){
  37.                     $("#cabecera2").css({'margin-left':-obj_left+'px' });
  38.                 }
  39.                
  40.                 lastPos = obj_left;//almacenar scroll top anterior
  41.             });
  42.         });

Esto me funciona bien y el scroll lo puedo mover horizontalmente y se queda fijo al hacer scroll vertical, pero la falla es que al tener la propiedad fixed, como la cabecera es de gran tamaño horizontalmente, ésta se ubica sobre el div que contiene la tabla y se sobresale bastante, lo cual se ve terrible, existe alguna propiedad que pueda usar para que la cabecera no se vea fuera del div o una forma de poner estatico un contenedor de forma vertical sin aplicar la propiedad position:fixed; ?.



Alguien podría ayudarme?

Y gracias de ante mano.