У меня есть такая ситуация, когда мне нужно прокрутить элемент в окне просмотра. Проблема в том, что я не знаю, какой элемент прокручивается. Например, в Portrait тело прокручивается, а в Landscape - другой элемент (и есть больше ситуаций, которые изменяют прокручиваемый элемент)Найти первого прокручиваемого родителя
Теперь вопрос, заданный элементом, который необходимо прокрутить в окне просмотра, лучший способ найти свой первый прокручиваемый родитель?
Я установил демо here. С помощью кнопки вы можете переключаться между двумя различными ситуациями
<div class="outer">
<div class="inner">
<div class="content">
...
<span>Scroll me into view</span>
</div>
</div>
</div>
Тело прокручивать или .outer
Любые предложения?
Если узел имеет 'inline' родителя,' clientHeight' будет 0, и он будет возвращен Вот. Лучше игнорировать узлы с 'clientHeight' 0. –
Это хорошо, но не работает для узлов, которые переполнены, но все еще не могут прокручиваться. Если вы добавите чек на значение [overflowY] (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled), он, похоже, работает хорошо. 'let overflowY = window.getComputedStyle (node) .overflowY;' 'let isscrollable = overflowY! == 'visible' && overflowY! == 'hidden';' 'if (isScrollable && node.scrollHeight> node.clientHeight) {' – RustyToms
Согласно @RustyToms и OP, я переписываю это: https://gist.github.com/twxia/bb20843c495a49644be6ea3804c0d775 – twxia