Sto creando una pagina Web con alcuni contenuti fuori schermo che devono essere inseriti solo in momenti specifici. Per raggiungere questo obiettivo sto impostando overflow-x: hidden
su html, body
. In questo modo l'utente non può scorrere verso sinistra o destra per ottenere il contenuto.window.pageYOffset è sempre 0 con overflow-x: nascosto
Tuttavia, ad un certo punto nell'applicazione ho anche bisogno della quantità che l'utente ha già fatto scorrere verso il basso. Per quanto ne so, lo window.pageYOffset
è uno dei modi più affidabili per farlo.
Tuttavia, quando ho impostato la regola overflow-x
. window.pageYOffset
è sempre uguale a 0
.
Queste cose non dovrebbero essere piuttosto scollegate l'una dall'altra? Come posso risolvere questo?
L'ho provato su Safari, Firefox e Chrome.
Ho provato document.documentElement.scrollTop
ma questo ha funzionato solo su Firefox.
NB:
non ero in grado di riprodurre il problema con un esempio molto semplice. La mia app ha anche il contenuto principale in un contenitore con position: absolute
. Se rimuovo questo, tutto funziona.
Quindi sembra essere la combinazione di overflow-x: hidden
su body
e postion: absolute
sul .content
all'interno del corpo.
Non riesco facilmente a eliminare il requisito assoluto di posizione, dal momento che diversi contenitori .content
devono poter essere posizionati uno sopra l'altro.
Modifica 2: Diventa ancora più strano: ho un transform: translate(0,0)
impostato su .content
per poter passare a qualche altro valore in seguito. Se rimuovo questo, tutto funziona bene! Ancora un'altra proprietà apparentemente non correlata css che interferisce.