jQuery - 仅当元素顶部不可见时才滚动到元素的顶部
jQuery - scrolling to the top of an element only if the top is not visible
假设我有一堆框,每个框的底部都有一个"滚动到顶部"链接。多亏了各种答案中发布的代码,我才能让滚动工作得很好:
<div class="box" style="height: 500px;">
<p>some tall box</p>
<span class="scroll-link">scroll to top of box</span>
</div>
$('.scroll-link').on('click', function () {
var $parent = $(this).parent();
$('html, body').animate({
scrollTop: $parent.offset().top
}, 'slow');
});
http://jsfiddle.net/L1d394ev/5/
但是,我仍然需要做一件事,那就是我陷入困境的地方:我只想在框顶部不可见时才滚动。(准确地说,太高了,看不见。
我已经尝试了此答案中发布的代码 - 如果您取消注释if
,在我的 JSfiddle 中很明显 - 但这似乎完全禁用了滚动。
我想我需要做的是检查元素的顶部是否太高而无法看到,但如何做到这一点,我不知道。
您的问题是计算偏移量的方式:
$('.scroll-link').on('click', function () {
var $parent = $(this).parent();
// Get the offset alone
var offset = $parent.offset().top;
// If the offset is less than the scroll position
if (offset < $(window).scrollTop()) {
$('html, body').animate({
// reuse your 'offset' variable instead of calculating it again
scrollTop: offset
}, 'slow');
}
});
更新的 JS 小提琴演示
相关文章:
- 使用jQuery更改元素的顶部位置
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 计算“;“左”;以及“;顶部“;来自固定位置浮动元素的值
- 如何在引导程序元素的顶部添加掩码
- 将列表元素动画制作到顶部
- 如何向下滚动页面,使指定的元素位于顶部
- 如何根据主体高度动态更改元素边距顶部
- Jquery.prepend()将一个元素保持在顶部
- 可滚动元素,如何在调整大小时更改顶部偏移量
- 如何使一个元素从网页的顶部跳到底部再跳回到顶部
- 保持光标位置元素在顶部使用 svg
- 如何将一个元素固定在另一个元素的顶部
- jQuery - 仅当元素顶部不可见时才滚动到元素的顶部
- 在 IE 中从 DOM 中删除选项时,滚动选择元素会跳到顶部
- Jquery scrollTop始终滚动到页面顶部,未找到元素顶部
- 将svg元素放置在另一个元素顶部的较高位置
- Javascript - window.getComputedStyle 返回 “auto” 作为元素顶部和左侧属性
- 如何使所有的html元素顶部的图像
- 位于另一个元素顶部的颜色盒定位
- 从窗口底部开始的元素顶部 100px