2017-02-21 3 views
2

Ich habe versucht, ein div auf meiner Website zu implementieren, die an der Spitze des Browsers klebt, sobald es aus dem Bildfenster scrollt. Ich habe ein Skript gefunden, das das ziemlich gut macht und es funktioniert gut auf dem Desktop. Wenn ich es auf dem iPhone teste, habe ich eine kurze Verzögerung, wo das Div für ungefähr eine halbe Sekunde scrollt und dann an der gewünschten Stelle aufspringt. Hat jemand eine Ahnung, wie ich dieses Skript optimieren könnte? Hierjquery Skript funktioniert auf dem Desktop, aber auf iPhone

ist der Link: jsFiddle

Vielen Dank für Ihre Hilfe!

function sticky_relocate() { 
      var window_top = $(window).scrollTop(); 
      var div_top = $('#sticky-anchor').offset().top; 
      if (window_top > div_top) { 
       $('#sticky').addClass('stick'); 
       $('#sticky-anchor').height($('#sticky').outerHeight()); 
      } else { 
       $('#sticky').removeClass('stick'); 
       $('#sticky-anchor').height(0); 
      } 
     } 

     $(function() { 
      $(window).scroll(sticky_relocate); 
      sticky_relocate(); 
     }); 

Antwort

0

Vielleicht können Sie setTimeout verwenden und das Intervall löschen, wenn die Scroll mehrere Male aufgerufen wird. Dies kann helfen, indem die Anzahl der Aufrufe des Callbacks begrenzt wird.

$(function() { 
    var timer; 
    $(window).scroll(function() { 
    clearInterval(timer); 
    timer = setTimeout(function() { 
     sticky_relocate(); 
    }, 50); 
    }); 
    sticky_relocate(); 
}); 
+0

thx für die Antwort. Keine Änderung. Ich habe es mit einem anderen Skript versucht (http://leafo.net/sticky-kit/#reference) und es scheint das gleiche Problem zu geben. –

+0

duh ... habe es gefunden. Es tut uns leid. http://stackoverflow.com/questions/32828973/iphone-sticky-menu-jquery-onscroll-ios-9 –

Verwandte Themen