【问题标题】:Javascript or html - scroll to a div inside scrollable divJavascript 或 html - 滚动到可滚动 div 内的 div
【发布时间】:2015-04-20 17:46:54
【问题描述】:

我有一个可滚动的 div (800px x 400px)。里面是 500 个较小的 div(100px x 80px),所以它是一个长的可滚动的。每个较小的 div 都有一个 id。当我按下按钮时,我想滚动到特定的 div。

我试过一些类似的

$("#outerDiv").scrollTop() = $("#innerDiv").scrollTop();

但我不知道 scrollTop 是否是正确的方法? (而且我知道我没有正确使用它)

是否有任何直观的方法可以在 javascript(首选)或纯 html 中执行此操作?

【问题讨论】:

    标签: javascript jquery jscrollpane


    【解决方案1】:

    使用Javascript

    document.getElementById('outerDiv').scrollTop = document.getElementById('innerDiv').offsetTop;
    

    向上滚动 如果要滚动元素的内容,请使用 scrollLeft 和 scrollTop 属性 - Link

    顶部偏移 HTMLElement.offsetTop 只读属性返回当前元素相对于 offsetParent 节点顶部的距离。 MDN -Link

    Fiddle

    【讨论】:

    • 请为您的答案添加一些解释。
    【解决方案2】:
    1. 您不能将方法的返回值分配给其他对象。无法评估正确的值。

      $("#outerDiv").scrollTop() = something 错误

    2. 通过将封闭容器的 scrollTop 设置为子元素相对于父元素的偏移量,应该可以实现您想要的。

      $("#outerDiv").scrollTop($("#innerDiv").position().top);

    【讨论】:

    • 几乎可以工作了! :-D 谢谢。它滚动到内部 div 的底部 - 有没有办法让它滚动到内部 div 的顶部?
    • 这可能与您的内部元素中使用的盒子模型有关。在您的情况下,尝试进一步减去内部 div 的高度?
    【解决方案3】:

    您需要将外部div的scrollTop()设置为内部divposition().top。此外,您设置scrollTop 的语法也有些偏差。试试这个:

    $("#outerDiv").scrollTop($("#innerDiv").position().top);
    

    Example fiddle

    【讨论】:

    • 感谢您的快速答复!这是有道理的,但似乎不起作用。我在这里做错了吗?: $("#clearButton").click(function(){ $("#calender").scrollTop() = $("#05052015").position().top; })
    • 如果我 alert(),我可以同时提醒外部 div 的当前 scrollTop 和内部 div 位置(有效) - 但该语句不会将外部 div 滚动到内部 div..
    • 谢谢 - 但@WawaBrother 在你之前回答了,所以我必须选择他作为答案.. 但谢谢你的时间:)
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多