Kaydırmanın zorluğu, bir div'i göstermek için yalnızca sayfayı kaydırmanız gerekmeyebilir, aynı zamanda herhangi bir seviyede kaydırılabilir div'lerin içinde de kaydırmanız gerekebilir.
ScrollTop özelliği, belge gövdesi dahil tüm DOM öğelerinde kullanılabilir. Bunu ayarlayarak, bir şeyin ne kadar aşağı kaydırılacağını kontrol edebilirsiniz. Ne kadar kaydırmanın gerekli olduğunu görmek için clientHeight ve scrollHeight özelliklerini de kullanabilirsiniz (clientHeight (viewport) scrollHeight'tan (içeriğin yüksekliği) az olduğunda kaydırma yapmak mümkündür.
Bir öğenin kapta nerede bulunduğunu bulmak için offsetTop özelliğini de kullanabilirsiniz.
Sıfırdan gerçekten genel amaçlı bir "görünüme kaydır" rutini oluşturmak için, açığa çıkarmak istediğiniz düğümden başlamanız, üst öğesinin görünür kısmında olduğundan emin olmanız ve ardından aynısını ebeveyn için tekrarlamanız gerekir. zirveye ulaşana kadar yol.
Bunun bir adımı şuna benzer (test edilmemiş kod, uç durumları kontrol etmek değil):
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);
}
}