2017-02-21 3 views
2

Я попытался реализовать div на своем веб-сайте, который находится в верхней части браузера, как только он прокручивается из окна просмотра. Я нашел сценарий, который делает это довольно хорошо, и он хорошо работает на рабочем столе. Когда я тестирую его на iphone, у меня короткое отставание, когда div прокручивается примерно на полсекунды, а затем поднимается в нужное место. Кто-нибудь подскажет, как я могу настроить этот сценарий?jquery script работает на рабочем столе, но лагов на iphone

Вот ссылка: jsFiddle

Спасибо за вашу помощь!

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(); 
     }); 

ответ

0

Может быть, вы можете использовать setTimeout и очистить интервал, когда свиток вызывается несколько раз. Это может помочь, если ограничить количество вызовов обратного вызова.

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

thx для ответа. без изменений. Я попробовал это с другим скриптом (http://leafo.net/sticky-kit/#reference), и, похоже, такая же проблема. –

+0

duh ... нашел его. Прости. http://stackoverflow.com/questions/32828973/iphone-sticky-menu-jquery-onscroll-ios-9 –

Смежные вопросы