Koduję stronę, na której użytkownik przewija się po raz pierwszy, w rzeczywistości nie przewija strony, zamiast tego dodaje klasę z przejściem. Chciałbym wykryć, kiedy użytkownik przewija w dół, ponieważ jeśli przewija w górę, chcę, aby zrobił coś innego. Wszystkie znalezione przeze mnie metody opierają się na zdefiniowaniu bieżącego ciała ScrollTop, a następnie porównaniu z treścią scrollTop po przewinięciu strony, definiując kierunek, ale ponieważ strona faktycznie nie jest przewijana, ciało scrollTop() doesn się nie zmieni.Jak określić kierunek przewijania bez rzeczywistego przewijania
animationIsDone = false;
function preventScroll(e) {
e.preventDefault();
e.stopPropagation();
}
$('body').on('mousewheel', function(e) {
if (animationIsDone === false) {
$("#main-header").removeClass("yellow-overlay").addClass("yellow-overlay-darker");
$(".site-info").first().addClass("is-description-visible");
preventScroll(e);
setTimeout(function() {
animationIsDone = true;
}, 1000);
}
});
To jest to, co ja przyszedłem z, ale w ten sposób nie ma znaczenia kierunek przewijać wyzwala zdarzenie
uwaga, że 'mousewheel' jest przestarzała i niestandardowe. Chociaż tylko FireFox go nie obsługuje. Aby obsługiwać FireFox, możesz spróbować obsługi 'DOMMouseScroll', odpowiednik' e.wheelDelta' w module obsługi zdarzenia 'mousewheel' ma około' -40 * e.detail' w procedurze obsługi zdarzenia "DOMMouseScroll". Wygląda również na to, że jQuery usuwa właściwość, musisz uzyskać dostęp do 'originalEvent'. –
możesz użyć ** [zdarzenia koła] (https://developer.mozilla.org/en-US/docs/Web/Events/wheel) **. Tutaj możesz sprawdzić przykład z obsługą wielu przeglądarek, posługując się przewijaniem: ** [stackoverflowflow.com/questions/4989632 ...] (http://stackoverflow.com/questions/4989632/differentiate-between-scroll-up -down-in-jquery/24792018 # 24792018) ** – jherax