Javascript 滚动到div中的元素

Javascript 滚动到div中的元素,javascript,scroll,scrollbar,anchor,Javascript,Scroll,Scrollbar,Anchor,我有一个绝对定位的div,它充当页面中心的模式窗口。模态窗口可通过右侧的滚动条垂直滚动。页面本身也可以通过右侧的滚动条垂直滚动。 我想能够点击一个链接,并有模式窗口滚动到链接的项目 使用target.scrollIntoView()我几乎可以实现这一点;但是整个页面会随着模式窗口一起滚动-我希望这样页面不会移动,只有模式窗口滚动。 如果我使用scrollIntoView(false),页面本身不会滚动,而模式窗口会滚动,但是目标元素位于窗口的底部,而我希望它位于顶部 是否有某种方法可以手动偏移d

我有一个绝对定位的div,它充当页面中心的模式窗口。模态窗口可通过右侧的滚动条垂直滚动。页面本身也可以通过右侧的滚动条垂直滚动。 我想能够点击一个链接,并有模式窗口滚动到链接的项目

使用target.scrollIntoView()我几乎可以实现这一点;但是整个页面会随着模式窗口一起滚动-我希望这样页面不会移动,只有模式窗口滚动。 如果我使用scrollIntoView(false),页面本身不会滚动,而模式窗口会滚动,但是目标元素位于窗口的底部,而我希望它位于顶部

是否有某种方法可以手动偏移div中目标的位置?i、 e.如果我使用scrollIntoView(false),目标显示在div的底部-如果我可以将其偏移视图窗口的高度,我应该能够将其移动到顶部

注意:我不能使用JQuery或类似的工具来实现这一点


提前感谢您的帮助。

您可以尝试将整数值指定给scrollTop属性

这是一个现场演示,我认为它符合您的要求:

执行此操作的代码如下:(主要检查
scrollFunc()
函数)


后两个函数只是我发现的获取页面当前滚动位置的跨浏览器兼容方式。这样做的目的是找到一个元素(可能在可滚动的div中),获取页面的当前滚动位置,将元素滚动到视图中(将其置于可滚动div的顶部),然后将页面位置重置回原来的位置。可能不是一个理想的解决方案,但它会完成工作。

谢谢您的回复-我会研究一下。同时,通过简单地将div.scrollTop设置为所链接元素的偏移量,我似乎已经达到了我所需要的效果。
function scrollFunc() {
    var est = document.getElementById('est');
    var docPos = f_scrollTop();
    est.scrollIntoView();
    window.scrollTo(0,docPos);
}

function f_scrollTop() {
    return f_filterResults (
        window.pageYOffset ? window.pageYOffset : 0,
        document.documentElement ? document.documentElement.scrollTop : 0,
        document.body ? document.body.scrollTop : 0
    );
}

function f_filterResults(n_win, n_docel, n_body) {
    var n_result = n_win ? n_win : 0;
    if (n_docel && (!n_result || (n_result > n_docel)))
        n_result = n_docel;
    return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}