Tworzę stronę internetową, która zawiera trochę treści poza ekranem, które muszą zostać przeniesione w określonym czasie. Aby to osiągnąć, ustawiam overflow-x: hidden
na html, body
. W ten sposób użytkownik nie może przewinąć w lewo lub w prawo, aby uzyskać dostęp do treści.window.pageYOffset ma zawsze wartość 0 z przepełnieniem-x: ukryty
Jednak w pewnym momencie aplikacji potrzebuję również kwoty, którą użytkownik przewinął jeszcze w dół. O ile wiem, że window.pageYOffset
jest jednym z najbardziej niezawodnych sposobów robienia tego.
Jednak po ustawieniu reguły overflow-x
. window.pageYOffset
jest zawsze równa 0
.
Czy te rzeczy nie powinny być ze sobą wzajemnie powiązane? Jak mogę to naprawić?
Testowałem to w Safari, Firefox i Chrome.
Próbowałem już document.documentElement.scrollTop
, ale działało to tylko w Firefoksie.
NB:
I nie był w stanie odtworzyć problemu z bardzo prostego przykładu. Moja aplikacja ma również główną zawartość w kontenerze o numerze position: absolute
. Jeśli to usuniemy, wszystko działa.
Więc wydaje się być połączeniem overflow-x: hidden
na body
i postion: absolute
na .content
wewnątrz ciała.
Nie mogę łatwo pozbyć się bezwzględnego wymogu pozycji, jednak od różnych pojemników .content
powinny być w stanie być umieszczone nad sobą.
Edycja 2: Robi się jeszcze dziwniej: mam zestaw transform: translate(0,0)
na .content
, aby móc później przejść do innej wartości. Jeśli to usuniemy, wszystko działa poprawnie! Jeszcze inna pozornie niezwiązana właściwość, która przeszkadza.