滚动所有嵌套的滚动条以显示HTML元素

7vujy0f0hy

我不能把头缠住它。

该元素存在于多个可滚动DIV元素的嵌套层次结构中,而不是存在于单个可滚动文档窗口中。

我的一个头痛的是如何scrolled.offsetParentdocument.body(颜色papayawhip在下面的测试代码),而不是scrollable(彩色pink)。

基于JQuery和其他库的此问题的解决方案仅作为补充,可以接受–为其他用户而不是我的利益。

测试码

(原始位置:JSFiddle。)

function ReportExpression(ExpressionString) {
    return ExpressionString + " == " + eval(ExpressionString) + "\n";
}

function ButtonClick() {
    var scrollable = document.querySelector('#scrollable');
    var scrolled = document.querySelector('#scrolled');
    alert(
        ReportExpression("scrollable.scrollTop") +
        ReportExpression("scrolled.offsetTop") +
        ReportExpression("(scrolled.offsetParent == document.body)")
    );
    scrollable.scrollTop = scrolled.offsetTop;
}
html {background-color: white;}
body {text-align: center; background-color: papayawhip;}
#page {display: inline-block; text-align: left; width: 500px; height: 500px;
    overflow: auto; background-color: powderblue; padding: 10px;}
#scrollable {height: 500px; overflow: auto; background-color: pink;}
<body>
  <div id="page">
    <button onClick="ButtonClick();">Scroll</button>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    <div id="scrollable">
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <text id="scrolled">I want to scroll all scrollbars to this element.</text>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    </div>
    <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
  </div>
</body>

我研究过的文章

  1. 如何使用JavaScript滚动到某个元素?
  2. http://www.quirksmode.org/js/findpos.html
  3. 如何滚动到div中的元素?
精氨酸0n

怎么样这个

function ButtonClick() {
  var page = document.querySelector('#page');
  var scrollable = document.querySelector('#scrollable');
  var scrolled = document.querySelector('#scrolled');
  page.scrollTop = scrollable.offsetTop-page.offsetTop;
  scrollable.scrollTop = scrolled.offsetTop-scrollable.offsetTop;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用滚动条查找所有元素

来自分类Dev

滚动条和元素-HTML / CSS

来自分类Dev

HTML全屏显示,无滚动条

来自分类Dev

不带CSS滚动条的滚动元素

来自分类Dev

不带CSS滚动条的滚动元素

来自分类Dev

滚动DIV元素的特定滚动条

来自分类Dev

QTableWidget显示滚动条

来自分类Dev

CSS固定元素显示在滚动条上

来自分类Dev

滚动条不显示自动溢出的元素

来自分类Dev

当元素大于其flexbox容器时,没有滚动条显示

来自分类Dev

Chrome SVG在某些元素上显示带有滚动条

来自分类Dev

Chrome SVG在某些元素上显示带有滚动条

来自分类Dev

tkinter滚动条没有滚动条

来自分类Dev

如果添加滚动条,所有标签都消失

来自分类Dev

隐藏没有溢出内容的元素的滚动条轨道

来自分类Dev

HTML:谁负责显示/隐藏滚动条?

来自分类Dev

使滚动条显示在RMarkdown代码块中(HTML视图)

来自分类Dev

一个 html 时钟的突然滚动条显示

来自分类Dev

从滚动条切出的元素

来自分类Dev

在滚动条后面扩展元素

来自分类Dev

隐藏嵌套div的滚动条,但仍使其可滚动

来自分类Dev

水平滚动条未显示

来自分类Dev

WPF网格不显示滚动条

来自分类Dev

显示表格和滚动条

来自分类Dev

DatagridView不显示水平滚动条

来自分类Dev

水平滚动条未显示

来自分类Dev

ListView不显示水平滚动条

来自分类Dev

如何强制显示垂直滚动条?

来自分类Dev

强制在ListView中显示滚动条?