javascript - 如何滚动以使特定元素位于 div 可见区域的中间?
问题描述
我有一系列列表项,我想将每个特定项放在其父 div 的可见区域的中间。所以第一个元素可以滚动到中间我在它之前添加了一些虚拟项目。(以及列表项的末尾)。这是我的功能:
function scrollToMiddleView(elem) {
if (elem) {
var main = $("#container");
m = main.scrollTop() + main.height() / 2;
t = main.offset().top + m;
main.animate({scrollTop: elem.offset().top - t}, 500);
}
}
我在一系列元素上对其进行测试。它适用于某些元素,不适用于其他一些元素。我在滚动条位于顶部时工作。我希望每个元素都精确地位于中间。
解决方案
这是有效的功能。main.scrollTop()
必须减去,main.offset().top
然后必须减去结果elem.offset().top
。
function scrollToMiddleView(elem) {
if (elem) {
var main = $("#container");
m = main.height() / 2;
t = main.offset().top - main.scrollTop() + m;
q = elem.offset().top - t;
main.animate({scrollTop: q}, 500);
}
}
推荐阅读
- android - 无法将 Kotlin-android-extension 与 Kotlin/native 一起使用
- c - GDB 不允许我读取 argv 内存段
- c# - 从列表框中获取多项选择
- ruby - 尝试使用 chromedriver 运行测试的问题
- html - Bootstrap 4 手风琴在角度 4 中导航
- javascript - 根据php ci中的指定值绘制自定义形状和填充颜色
- laravel - 使用 laravel-snappy 生成空白内容 PDF
- postgresql - 从属中的 Postgres 复制 .done 文件
- azure - 如何将托管在云上的 MySQL 数据库连接到 Azure 数据工厂?
- c# - 如何使用 c# 进行多个浏览器操作?