Я хочу достичь простой прокрутки функции, которая всегда будет прокручиваться до той же точки относительно положения scrollTop.Странное поведение функции прокрутки
Я подумал, что использование window.scroll будет хорошим подходом здесь, потому что я могу читать текущее значение scrollTop, поскольку я сожалею, что это не работает, в некоторых браузерах я не могу прокручивать (IE), на других (Chrome, Firefox) после нажатия тега, связанного с этой функцией. У меня появилось поведение автоматического прокрутки, немного вверх, а затем немного вниз.
Я не хочу использовать плагин scrollTo или другие, потому что это единственное место на моей странице с такой функциональностью.
$(window).scroll(function() {
var y = $(window).scrollTop();
console.log(y);
var mainBanner = $('header').height();
if (y > 1 && y < mainBanner) {
$('#slideUpHead').click(function(){
$("html, body").animate({ scrollTop: mainBanner - y}, 600);
});
}
else if(y < 1){
$('#slideUpHead').click(function(){
$("html, body").animate({ scrollTop: y + mainBanner}, 600);
});
}
else {
}
});
вот мой второй подход, частично рабочий:
myScroll = function(){
var mainBannerH = $('header').height();
var y = $(window).scrollTop();
if (y > 1 && y < mainBannerH) {
$("html, body").animate({ scrollTop: mainBannerH - y}, 600);
}
else if(y < 1){
$("html, body").animate({ scrollTop: y + mainBannerH}, 600);
}
else {
console.log("It's not working properly");
}
};
$('#slideUpHead').click(myScroll);
Вы 'получил поведение авто прокрутки, немного вверх, а затем немного down', потому что вы повторно прикрепление другого обработчика щелчка снова и снова каждый раз, когда' window.onscroll' пожаров событий. –
Я сделал второй подход (отредактированный пост), но он работает частично, только для y <1, для y между 1 и mainBannerH он иногда прокручивается немного вниз, но только один раз, автоматический прокрутка исчезла. Дело в том, что я получаю значение scrollTop только один раз при загрузке страницы, как я могу его перепроверить? –
Решение найдено, можете ли вы проверить, может ли быть лучше? –