Kesulitan dengan menggulir adalah bahwa Anda mungkin tidak hanya perlu menggulir halaman untuk menampilkan div, tetapi Anda mungkin perlu menggulir ke dalam div yang dapat digulir pada sejumlah level juga.
Properti scrollTop tersedia di elemen DOM apa pun, termasuk badan dokumen. Dengan mengaturnya, Anda dapat mengontrol seberapa jauh sesuatu digulir ke bawah. Anda juga dapat menggunakan properti clientHeight dan scrollHeight untuk melihat seberapa banyak pengguliran yang dibutuhkan (pengguliran dimungkinkan ketika clientHeight (viewport) kurang dari scrollHeight (ketinggian konten).
Anda juga bisa menggunakan properti offsetTop untuk mencari tahu di mana dalam wadah sebuah elemen berada.
Untuk membuat rutinitas "gulir ke tampilan" yang benar-benar bertujuan umum dari awal, Anda harus mulai dari node yang ingin Anda tampilkan, pastikan node tersebut berada di bagian yang terlihat dari induknya, lalu ulangi hal yang sama untuk induknya, dll. jalan sampai Anda mencapai puncak.
Salah satu langkahnya akan terlihat seperti ini (kode belum diuji, bukan memeriksa kasus edge):
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);
}
}