Die Schwierigkeit beim Scrollen besteht darin, dass Sie möglicherweise nicht nur die Seite scrollen müssen, um ein Div anzuzeigen, sondern möglicherweise auch in scrollbaren Divs auf einer beliebigen Anzahl von Ebenen scrollen müssen.
Die scrollTop-Eigenschaft ist für jedes DOM-Element verfügbar, einschließlich des Dokumententexts. Durch Einstellen können Sie steuern, wie weit unten etwas gescrollt wird. Sie können auch die Eigenschaften clientHeight und scrollHeight verwenden, um zu sehen, wie viel Bildlauf erforderlich ist (Bildlauf ist möglich, wenn clientHeight (Ansichtsfenster) kleiner als scrollHeight (die Höhe des Inhalts) ist.
Sie können auch die Eigenschaft offsetTop verwenden, um herauszufinden, wo sich im Container ein Element befindet.
Um eine wirklich universelle Routine zum Scrollen in die Ansicht von Grund auf neu zu erstellen, müssen Sie an dem Knoten beginnen, den Sie verfügbar machen möchten, sicherstellen, dass er sich im sichtbaren Teil des übergeordneten Knotens befindet, und ihn dann für den übergeordneten Knoten usw. wiederholen den Weg bis zum Gipfel.
Ein Schritt davon würde ungefähr so aussehen (ungetesteter Code, keine Überprüfung von Randfällen):
function scrollIntoView(node) {
var parent = node.parent;
var parentCHeight = parent.clientHeight;
var parentSHeight = parent.scrollHeight;
if (parentSHeight > parentCHeight) {
var nodeHeight = node.clientHeight;
var nodeOffset = node.offsetTop;
var scrollOffset = nodeOffset + (nodeHeight / 2) - (parentCHeight / 2);
parent.scrollTop = scrollOffset;
}
if (parent.parent) {
scrollIntoView(parent);
}
}