如何使滚动条移动到一个准确的位置
How to make the scroll bar to move to a accurate place
我有一个滚动条列表。还有一个按钮,当按下时,它会移动到某个#id
,滚动条也会移动,使该元素可见。但这并不准确。它会移动,但并不总是移动到正确的位置。我怎样才能使这个滚动功能是准确的:
function next() {
$(".list li").css("background", "grey");
goToByScroll(myID);
$("#" + myID).css("background", "red");
myID = $("#" + myID).next("li").attr("id");
}
function goToByScroll(id) {
$('.list').animate({
scrollTop: $("#" + id).offset().top - $("#" + id).height()
},
'slow');
}
在演示中尝试按下next按钮,你会看到在一些项目中滚动条移动但不正确。
任何想法?
代码的问题是,当您向下滚动列表时,您将获得每个元素的offset
。
偏移量是:
The .offset() method allows us to retrieve the current position of an element
relative to the document.
这使得框的offset
越小,越往下。
你需要做的是计算出一个元素的高度和边距是多少,然后做一些计算:
var myID = $(".list").children().first().attr("id");
function next() {
var li = $("#"+myID);
$(".list li").css("background", "grey");
var offset = parseInt(li.height())+parseInt(li.css("margin-top"));
$('.list').animate({scrollTop: offset*(myID-1)},'slow');
$("#"+myID).css("background", "red");
myID++;
}
这个小提琴展示了它的作用。它的作用是获取当前元素的高度+边距,然后乘以列表中你所处的元素个数。
这只适用于所有元素大小相同且id为增量的情况。
如果你想让它与动态ID一起工作,你所要做的就是设置一个增量变量来跟踪你迭代了多少,然后像你之前做的那样获取下一个ID:
var myID = $(".list").children().first().attr("id");
var inc = 1;
function next() {
var li = $("#"+myID);
$(".list li").css("background", "grey");
var offset = parseInt(li.height())+parseInt(li.css("margin-top"));
$('.list').animate({scrollTop: offset*(inc-1)},'slow');
$("#"+myID).css("background", "red");
myID = $("#"+myID).next().attr("id");
inc++;
}
还有小提琴
相关文章:
- 为什么我在 webpack 中需要 html 文件时会得到一个位置字符串
- Caret函数没有'如果插入符号在最后一个位置,就不能正常工作
- 是否可以将一个元素还原为它's上一个位置,而不将该位置作为参数传递
- 对jQuery UI可排序表应用包含可以防止将高行移动到最后一个位置
- 使用javascript和php,在单击图像时将其移动到另一个位置
- 创建从一个位置到另一个位置的路径动画
- 如何滚动到DIV顶部表格的最后一个位置(项目10)
- 将HTML元素的位置更改为另一个位置javascript
- 在站点的另一个位置运行 java 脚本
- 咖啡脚本数组查找下一个位置
- 如何将我的 Google 地图功能从自动查找我的位置更改为让我输入一个位置
- 当现有 Google 标记移动到另一个位置时,如何更新新的纬度和经度
- 使用 jquery 或 javascript 从一个位置导出 excel 文件
- 默认情况下,在 angularjs 中选择下拉列表中的最后一个位置显示占位符
- 如何将另一个 JSON 中的 JSON 对象移动到最后一个位置
- 用户在谷歌地图上标记一个位置
- 离开悬停后如何将P标签保持在上一个位置
- 使用jQuery单击时将元素移动/复制到另一个位置
- 将排序数组的数组元素移动到具有特殊逻辑的另一个位置
- 如何淡出图像,然后使其出现在jquery中的另一个位置