Ich habe diese Situation, in der ich ein Element in das Ansichtsfenster scrollen muss. Das Problem ist, dass ich nicht weiß, welches Element scrollbar ist. In Portrait ist der Körper zum Beispiel scrollbar und in Landscape ist ein anderes Element (und es gibt mehr Situationen, die das scrollbare Element verändern)Suchen erste rollbare Eltern
Jetzt ist die Frage, ein Element, das in den Viewport gescrollt werden muss, was ist der beste Weg, um seinen ersten scrollbaren Elternteil zu finden?
Ich habe eine Demo here eingerichtet. Mit der Taste können Sie zwischen zwei verschiedenen Situationen wechseln
<div class="outer">
<div class="inner">
<div class="content">
...
<span>Scroll me into view</span>
</div>
</div>
</div>
Der Körper scrollbaren oder .outer
Irgendwelche Vorschläge?
Wenn der Knoten ein 'inline' Elternteil hat,' clientHeight' 0 sein wird, und es wird zurückgegeben Hier. Besser zu ignorieren Knoten mit 'clientHeight' von 0. –
Das ist schön, aber funktioniert nicht für Knoten, die nach wie vor überfüllt sind, kann aber nicht bewegen. Wenn Sie eine Überprüfung für den Wert [overflowY] hinzufügen (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled), scheint es gut zu funktionieren. 'lassen overflowY = window.getComputedStyle (Knoten) .overflowY;' ' lassen isScrollable = overflowY == 'sichtbar' && overflowY == 'versteckt';!' ' if (isScrollable && node.scrollHeight> node.clientHeight) {' – RustyToms
Laut @RustyToms und OP, schreibe ich diesen um: https://gist.github.com/twxia/bb20843c495a49644be6ea3804c0d775 – twxia