У меня проблемы с localscroll - у меня есть фиксированный элемент заголовка, который появляется после 100 или около того пикселей сверху. Когда пользователь нажимает на элемент навигации, он прокручивается до нужной позиции, но затем, когда я пытаюсь щелкнуть по другому пункту меню, он не сдвинется, если я не переместил страницу очень немного.
Это происходит только на iPad - он отлично работает в настольных браузерах.
У кого-нибудь есть идеи?
var sections = $('section,footer'),
links = $('nav a');
$(window).scroll(function() {
var currentPosition = $(this).scrollTop();
links.removeClass('selected');
sections.each(function() {
var top = $(this).offset().top - 100,
bottom = top + $(this).height();
if (currentPosition >= top && currentPosition <= bottom) {
$('a[href="#' + this.id + '"]').addClass('selected');
}
if ($(window).scrollTop() + $(window).height() == $(document).height()) {
links.removeClass('selected');
$('.last a').addClass('selected');
}
});
});
$.localScroll();
Удалось найти исправление через: https://gist.github.com/mckamey/1e661854044177a95064
(function(){
var THROTTLE = 100,//ms
_timer = 0,
_dom = document.documentElement,
_width = _dom.style.width,
reset = function(){
// reset size, unfortunately forces another reflow
_dom.style.width = _width;
},
forceReflow = function(){
if (_timer) {
clearTimeout(_timer);
_timer = 0;
}
_width = _dom.style.width;
// force a reflow by increasing size 1px
_dom.style.width = (_dom.offsetWidth+1)+'px';
setTimeout(reset, 0);
},
onscroll = function() {
if (_timer) {
clearTimeout(_timer);
}
_timer = setTimeout(forceReflow, THROTTLE);
};
window.addEventListener('scroll', onscroll, false);
})();