Ho questa situazione in cui ho bisogno di scorrere un elemento nel viewport. Il problema è che non so quale elemento è scorrevole. Ad esempio, in Portrait il corpo è scorrevole e in Landscape è un altro elemento (e ci sono più situazioni che cambiano l'elemento scorrevole)Trova il primo genitore scrollabile
Ora la domanda, dato un elemento che deve essere fatto scorrere nel viewport, che cos'è il modo migliore per trovare il suo primo genitore scorrevole?
Ho installato una demo here. Con il pulsante è possibile commutare tra due diverse situazioni
<div class="outer">
<div class="inner">
<div class="content">
...
<span>Scroll me into view</span>
</div>
</div>
</div>
Il corpo è scorrevole o .outer
Qualche suggerimento?
Se il nodo ha un genitore 'inline',' clientHeight' sarà 0 e sarà restituita Qui. Meglio ignorare i nodi con 'clientHeight' di 0. –
Questo è bello ma non funziona per i nodi che stanno straripando ma non possono ancora scorrere. Se si aggiunge un controllo per il [valore di overflowY] (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled), sembra funzionare bene. 'overflowY = window.getComputedStyle (node) .overflowY;' 'let isScrollable = overflowY! == 'visible' && overflowY! == 'hidden';' 'if (isScrollable && node.scrollHeight> node.clientHeight { – RustyToms
Secondo @RustyToms e OP, riscrivo questo: https://gist.github.com/twxia/bb20843c495a49644be6ea3804c0d775 – twxia