2015-09-22 7 views
7

Ho usato sotto il codice per simulare l'intestazione fissa con barre di scorrimento verticali e orizzontali. Vedi example on jsFiddle.Come risolvere il problema del movimento scrollX in jQuery DataTables su dispositivi mobili?

$('#liveTable').dataTable({ 
     'bSort': false, 
     'destroy': true, 
     'aoColumns': [ 
        { sWidth: "85px", bSearchable: false, bSortable: false }, 
        { sWidth: "75px", bSearchable: false, bSortable: false }, 
        { sWidth: "80px", bSearchable: false, bSortable: false }, 
        { sWidth: "80px", bSearchable: false, bSortable: false }, 
        { sWidth: "85px", bSearchable: false, bSortable: false }, 
        { sWidth: "70px", bSearchable: false, bSortable: false }, 
        { sWidth: "70px", bSearchable: false, bSortable: false }, 
        { sWidth: "50px", bSearchable: false, bSortable: false } 
       ], 
     'scrollY': 200, 
     'scrollX': true, 
     'info': false, 
     'paging': false 
}); 

Il codice sopra riportato funziona perfettamente in Desktop.

Ma nei dispositivi mobili quando si scorre il corpo dell'intestazione del contenuto, la parte non si sposta di conseguenza. C'è un po 'di ritardo (effetto sfarfallio) nel movimento dell'intestazione nei dispositivi mobili.

Come risolvere il problema di movimento dell'intestazione nei dispositivi mobili?

+0

Quale versione di DataTables stai utilizzando? Se non è l'ultima (1.10.9), puoi provare 1.10.9 e vedere se riscontri ancora lo stesso problema? –

+0

@ Gyrocode.com, ho aggiornato la mia versione (1.10.9). Evento dopo l'aggiornamento della versione, esiste lo stesso problema. – RGS

+0

Oltre a un problema con larghezze personalizzate, funziona perfettamente su Android 5, senza sfarfallio. Su quale piattaforma mobile vedi sfarfallio? –

risposta

2

Prova questo se funziona per te. È il contrario, ma funziona. Forse avrai solo bisogno di regolare la larghezza o qualsiasi altra cosa. Corri attraverso jsFiddle per testarlo.

$.event.special.scrollstart = { 
     enabled: true, 

      setup: function() { 
       var thisObject = this, 
        $this = $(thisObject), 
         scrolling, 
         timer; 

       function trigger(event, state) { 
        scrolling = state; 
        var originalType = event.type; 
        event.type = scrolling ? "scrollstart" : "scrollstop"; 
        $.event.handle.call(thisObject, event); 
        event.type = originalType; 
       } 


       $this.bind(scrollEvent, function(event) { 
        if (!$.event.special.scrollstart.enabled) { 
         return; 
        } 

        if (!scrolling) { 
         trigger(event, true); 
        } 

        clearTimeout(timer); 
        timer = setTimeout(function() { 
         trigger(event, false); 
        }, 50); 
       }); 
      } 
    }; 

Ok, se l'effetto sfarfallio esiste, provare qualcosa di simile. La tua scroll è ok. È l'effetto che fa schifo.

   document.getElementById("btn").addEventListener("click", function(){ 
        var abc = document.getElementById("abc"); 
        var def = document.getElementById("def"); 

        abc.style["-webkit-transition-duration"] = "0ms"; 
        def.style["-webkit-transition-duration"] = "0ms"; 
        abc.style["-webkit-transform"] = "translate3d(0, 0, 0)"; 
        def.style["-webkit-transform"] = "translate3d(100%, 0, 0)"; 
        setTimeout(function(){ 
         abc.style["-webkit-transition-duration"] = "1s"; 
         def.style["-webkit-transition-duration"] = "1s"; 
         abc.style["-webkit-transform"] = "translate3d(-100%, 0, 0)"; 
         def.style["-webkit-transform"] = "translate3d(0, 0, 0)"; 
        }, 
); 
       }); 
+0

Non funziona in Android 4.3 Jelly Bean versione – RGS

+0

Il problema non è nella lista, è in questo effetto di sfarfallio. Era/è ancora una specie di bug. Ho aggiornato la mia risposta. Provalo ora. –

+0

ups, sry, ho inserito i numeri di riga quando ho cp-ed. –

Problemi correlati