滚动所有嵌套滚动条以将 HTML 元素带入视图

2024-04-11

我无法理解它。

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

我头疼的问题之一是如何scrolled.offsetParent is document.body(颜色papayawhip在下面的测试代码中)而不是scrollable(颜色pink).

基于 JQuery 和其他库的此问题的解决方案只能作为补充而被接受 - 为了其他用户的利益,而不是我的利益。

测试代码

(原地点:JSFiddle https://jsfiddle.net/262amaxL/5/.)

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 滚动到某个元素? https://stackoverflow.com/questions/5007530/how-do-i-scroll-to-an-element-using-javascript
  2. http://www.quirksmode.org/js/findpos.html http://www.quirksmode.org/js/findpos.html
  3. 如何滚动到div内的元素? https://stackoverflow.com/questions/635706/how-to-scroll-to-an-element-inside-a-div

怎么样this https://jsfiddle.net/Arg0n/804gtjp5/?:

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滚动所有嵌套滚动条以将 HTML 元素带入视图 的相关文章

  • 如何保存 Tensorflow.js 模型?

    我想制作一个创建 保存和训练 tensorflow js 模型的用户界面 但我无法在创建模型后保存模型 我什至从tensorflow js文档复制了这段代码 但它不起作用 const model tf sequential layers t
  • Haxe for javascript 没有全局命名空间污染?

    此问题仅适用于 Haxe 版本 我知道 haxe 一段时间了 但直到昨天才真正使用过它 出于好奇 我决定移植对决 js http wmd editor com examples splitscreen 一个 javascript 端口降价
  • 使用正则表达式验证字符串是否安全

    我有一个网站 用户可以在其中选择用户名 目前 他们可以输入几乎任何字符 包括 ETC 我知道我可以使用正则表达式 这可能就是我的选择 我将使用否定集 我认为这是正确的工具 如下所示 那么 我怎样才能知道要放入该集合中的所有非法字符呢 我可以
  • 带有 nextjs 的 Material-ui 选项卡?

    我有一个 Material ui nextjs 和 typescript 项目 我正在尝试让我的导航栏与 nextjs 一起使用 import as React from react import AppBar from material
  • 在函数调用时加载外部 Javascript

    我想知道如何从函数将外部 Javascript 加载到我的文档中 这是一种方法 function loadDaFun var script document createElement script script src path to y
  • 为什么我无法使用 HTML5 音频标签多次播放声音?

    这就是声音的 存储 方式
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 在 ASP.NET MVC 中使用 bootstrap 创建模式

    我在 ASP NET MVC 项目上使用 NET Framework 4 5 Bootstrap v3 3 6 我想做的是创建一个模态表单 我尝试了以下方法 在主布局中创建了一个模态容器 div class modal fade style
  • YouTube - 右键单击​​时不显示上下文菜单

    想法 通过使用右键拖放到视频播放器上来查找 YouTube 视频 例如 每 2 屏幕宽度 1 秒 因此 在 1920x1080 的屏幕上 如果我按下鼠标右键 将其向左拖动 384 像素 20 然后松开 视频应该快退 10 秒 我有一个 Gr
  • HTML5 Audio Element 无法在 IOS 11 设备上的 safari 中播放 mp3 直播

    我是一家广播公司的网络开发人员 自 iOS 11 发布以来 我们收到了一些用户投诉 称我们的音频直播流无法再在 IOS 11 设备上播放 为了将流嵌入我们的网站 我们使用 HTML5 AudioElement 在 iOS 11 的 iPho
  • 如何按日期升序对对象进行排序?

    如果我有一个对象列表 var objectList LIST OF OBJECT each object列表中包含三个属性 name date gender 如何按 对列表中的对象进行排序date 属性升序 the date 属性包含字符串
  • 在 Jscript 中实例化 System.Threading.Thread 对象

    我正在尝试使用 Jscript 创建一个新的 System Threading Thread 对象 但我无法让构造函数工作 如果我只是执行以下操作 var thread new Thread threadFunc function thre
  • 如何列出特定服务器的所有成员?

    我的代码是 const list client guilds find id 335507048017952771 for user of list users console log user 1 username 这实际上没有任何作用
  • bootstrap-datetimepicker 仅显示日期

    我正在用这个repo https github com smalot bootstrap datetimepicker由 smalot 提供 我只想选择并显示日期 对于其他一些地方 我显示数据和时间 因此选择此存储库 我可以设法仅使用它来选
  • Chrome 和 IE 上的滚动/延迟事件

    我试图让用户始终看到一个内容块 即使他向下滚动页面也是如此 他还应该能够上下滚动内容块 这是一个精简版本的小提琴 向您展示我的意思 http jsfiddle net 9ehfV 2 http jsfiddle net 9ehfV 2 人们
  • 在 gulp 和 browsersync 问题中观看新文件

    我使用 browsersync 在文件更改时重新加载浏览器 而且它工作完美 但是当我创建新文件 例如 html scss js 时 bowsersync 不起作用 如何解决这个问题 gulpjs Browser Sync gulp task
  • ExtJS:简单表单忽略 formBind

    我有一个小问题让我发疯了好几天 我有一个表单面板 Ext define EC view PasswordPanel extend Ext form Panel alias widget pwdpanel bodyPadding 15 ini
  • 显示对象内容 - JS/jQuery

    With this data events 返回 object Object 我需要看看里面到底发生了什么 我找到了这个 var Finder each this data events function i n Finder Name i
  • 如何选中表格中输入文本焦点上的复选框

    我试图在输入文本焦点上检查表 DOM 中的复选框 但无法访问复选框元素 但我的焦点正在工作 这是我的 jsfiddle 链接https jsfiddle net 9qha9vft https jsfiddle net 9qha9vft 这是
  • JavaScript:如何在 Internet Explorer 中模拟更改事件(委托)

    UPDATE 回顾 小提琴和赏金 这个问题并没有引起太多关注 所以我将花一些时间来解决这个问题 我知道我的答案和问题都过于冗长 这就是为什么我继续设置这把小提琴 http jsfiddle net vVA8N 在我看来 这是我目前必须用来接

随机推荐

  • javascript中的地理空间查询[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我进行地理空间查询 我知道 OpenLayers 和
  • codeigniter、result() 与 result_array()

    我都用result and result array 通常我喜欢将结果作为数组 这就是我主要使用 result array 的原因 但我想知道我应该遵循哪种更好的方法 就性能而言 其中哪一个使用起来更有效 这是我在 codeigniter
  • 如何使用VBA保存分号分隔的csv文件?

    我将数据复制到电子表格中 使用 VBA 对其进行格式化 然后将该工作表保存到 CSV 文件中 我使用以下代码 ws SaveAs Filename filestr Fileformat xlCSV ws 是我保存的工作表 这给了我一个以逗号
  • 在 Symfony2 中将多对多关系保存到数据库

    在我的 Symfony2 项目中 我有两个相关的实体 用户和收藏夹 他们之间是多对多的关系 我的应用程序的工作原理如下 在我的 Twig 页面中 我有一些带有 添加到收藏夹 按钮的项目 当您单击该按钮时 我的控制器会将 item id 保存
  • 无法播放 AVAudioPlayer 中文档中的文件

    我在应用程序的文档文件夹中有一个文件 我想播放它 if NSFileManager defaultManager fileExistsAtPath pathString let url NSURL fileURLWithPath pathS
  • Mac OSX 中的 eclipse 中凭证存储失败

    当我使用 mac 中的 eclipse 和我的凭据连接到 tfs 中的服务器项目时 它的连接没有任何问题 但是当我在登录对话框中检查 保存密码 时 它显示错误 凭据存储失败 无法保存您的凭据 有什么办法可以摆脱这个 因为我不想每次打开 ec
  • LibGDX 文本字段输入导致崩溃

    所以我试图制作一个登录屏幕 现在的问题是 当我在文本字段中输入文本时 我的游戏崩溃了 这是我的主菜单类 import com badlogic gdx Gdx import com badlogic gdx Screen import co
  • 无法对非静态方法进行静态引用

    到目前为止我有以下代码 import java util Scanner public class HallLanceMemoryCalculator private double currentValue public static in
  • window.onload 与 $(document).ready()

    JavaScript 之间有什么区别window onload https developer mozilla org en docs Web API GlobalEventHandlers onload和 jQuery 的 documen
  • Vertx JDBC 的底层工作原理

    我已经使用 Vertx 3 个月了 但现在我想知道非阻塞 Vertx JDBC 是如何工作的 例如 private void selectEndedMatches this jdbcClient getConnection conn gt
  • `fs.js` 中的 `process.binding('fs')` 是什么? [复制]

    这个问题在这里已经有答案了 我看到在顶部fs js有一个process binding fs https github com nodejs node blob master lib fs js L10 https github com n
  • Facebook 创建新应用程序错误 - “不应包含协议信息。”

    我正在尝试更新 创建我的应用程序的 应用程序域 但它不断抛出此错误 Error 应用程序域 http www example com http www example com不应包含协议信息 而我 100 确定我的网站没有任何 OpenGr
  • 如何在 alpine 上安装 aws-cli?

    我正在运行 alpine 的 docker swarm 管理器节点上安装 aws cli Linux 0317632a4ad9 4 9 59 moby 1 SMP Thu Mar 1 20 54 00 UTC 2018 x86 64 Lin
  • 如何制作 HTML 脚本来替换网站的 cookie

    我想要制作一个 HTML 脚本 只需单击一下按钮即可替换特定网站的 cookie PS 我不知道这是如何完成的 我之前创建过扩展 但是我想创建一个执行相同工作的网页 HTML 根本无法对 cookie 执行任何操作 Cookie 可以通过以
  • mySQL 当 field=0 时返回所有行

    我正在做一些测试 当我查询一个表时 令人惊讶的是 查询SELECT FROM table WHERE email 0返回表中的所有行 该表没有 0 值 并且填充了常规电子邮件 为什么会出现这种情况 这可能会导致严重的安全问题 有没有办法在不
  • 在 iOS6 上切换设备上的 FB 帐户时 Facebook 授权失败

    我正在使用 Facebook SDK 3 1 1 在我的 iOS 应用程序中实现 FB Connect 在简单的情况下 无论是使用新的 FB 集成 在 iOS 上登录 还是通过 Web 视图返回到正常授权 在这两种情况下我都没有安装本机 F
  • 是否有任何平台在 fd_set(对于 select() 或 pselect())上使用结构复制会导致问题?

    The select and pselect http www opengroup org onlinepubs 9699919799 functions pselect html系统调用修改它们的参数 fd set 参数 因此输入值告诉系
  • $(document).on 'ready page:load' - 在 ie10 中无法正常工作

    我正在 Rails 中开发 对于jquery 我使用coffeescript Turbolink 处于活动状态 我有一个问题 这让我很紧张 当我想启动我的函数 这里称为脚本 时 我使用以下代码 document on ready page
  • 当 iPhone 进入睡眠状态时,AVAudioPlayer 停止播放音频

    只要我的应用程序正在运行 我就需要一直播放背景声音 我尝试使用 AVAudioPlayer 来实现此目的 然而 一旦 iPhone 进入睡眠模式 它就会停止播放声音 你能让我知道如何解决这个问题吗 Thanks 您可能需要设置音频会话类别
  • 滚动所有嵌套滚动条以将 HTML 元素带入视图

    我无法理解它 该元素存在于多个可滚动 DIV 元素的嵌套层次结构中 而不是存在于单个可滚动文档窗口中 我头疼的问题之一是如何scrolled offsetParent is document body 颜色papayawhip在下面的测试代