如何使滚动到顶部按钮在页面的预定部分出现时出现
How do I make a scroll to top button appear when a pre-determined part of the page appears?
我有一个滚动到顶部按钮,我通过从众多示例之一中获得的代码实现。效果很好。我更改了其外观的计时函数,以便不是在 100 像素之后显示,而是在 1340 像素之后显示。我这样做是因为右侧有一些框,我不希望按钮出现,直到它们被滚动并且出现空白区域以使按钮淡入。时机看起来很完美 - 按钮出现在我认为距离页面顶部1340像素之后。
但是,我注意到在不同的(较大)屏幕上,按钮没有出现在正确的时间,而是稍后出现。我意识到(如果我没收集到的话)是 1340 规范不是页面顶部的绝对像素数,而是从浏览器窗口底部滚动浏览的像素数。例如,如果我将浏览器窗口的高度从 1000 像素重新调整为 400 像素并重新加载页面,则该按钮将很快显示 600 像素。
所以我的问题是,有没有办法更改我的代码,以便按钮仅在页面的某个部分(从窗口顶部测量)出现在屏幕上时出现?
这是我目前正在使用的javascript:
<script type="text/javascript">
$(document).ready(function () {
$(window).scroll(function () {
if ($(this).scrollTop() > 1340) {
$('#scrollup').fadeIn();
} else {
$('#scrollup').fadeOut();
}
});
$('#scrollup').click(function () {
$("html, body").animate({ scrollTop: 0 }, 500);
return false;
});
});
</script>
感谢您的任何帮助。
试试这个--
<script type="text/javascript">
$(document).ready(function () {
ToggleScrollUp();
$(window).scroll(function () {
ToggleScrollUp();
});
$('#scrollup').click(function () {
$("html, body").animate({ scrollTop: 0 }, 500);
return false;
});
});
function ToggleScrollUp() {
if ($(".yourbox").offset().top < $(window).scrollTop() + $(window).height()) {
$('#scrollup').fadeIn();
} else {
$('#scrollup').fadeOut();
}
}
</script>
看看这个小提琴: http://jsfiddle.net/ro39dkaL/2/
与其使用 1340 计算盒子底部的位置,不如动态计算位置,以便始终准确应对情况:
$(document).ready(function () {
var elem = $('#weblinks');
var bottom = $(elem).position().top+$(elem).outerHeight(true)
$(window).scroll(function () {
if ($(this).scrollTop() > bottom) {
$('#scrollup').fadeIn();
} else {
$('#scrollup').fadeOut();
}
});
$('#scrollup').click(function () {
$("html, body").animate({ scrollTop: 0 }, 500);
return false;
});
});
指定的 1340 是硬编码的,并非在所有情况下都准确。
更好的解决方案是在浏览器窗口中找到元素的高度。
可以使用 jquery .offset()。
var offset = $("#child").offset();
var fromTop = offset.top - $(window).scrollTop();
我做了这个小提琴,我用另一种方式:如您所见,我放置了一个 id 为 scroll_toggle
的div。当用户到达此div时(显然您可以删除文本,这只是一个演示)。
这是小提琴:http://jsfiddle.net/afilini/7633pr0r/
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- jquery:将动画绑定到滚动条位置的更好方法
- 从父元素取消绑定滚动事件并绑定到子元素
- 视差 - 偏移元素,绑定到滚动
- 如何在使用“显示和隐藏锚定标记”时防止滚动页面
- 绑定'滚动'不会'我在IE 11中不工作
- 锚定标签功能强大,但滚动流畅赢得't工作;页面的行为就像javascript是'没有
- 离子/角度指令绑定到滚动
- 将DIV元素绑定到溢出滚动条
- 动画(绑定到 scrollTop)仅在我停止滚动时完成
- 触摸事件的挖空事件绑定导致滚动问题
- 滚动事件未绑定在指令内 - 角度.js
- 锚定平滑滚动脚本跳转
- 平滑滚动以锚定在不同的页面上
- 将垂直滚动位置绑定到计数器
- 绑定此鼠标滚轮事件处理程序将禁用垂直滚动
- angular:绑定到滚动事件不起作用
- 将多个事件处理程序绑定到滚动事件是否会影响性能
- 绑定窗口滚动AngularJS方式
- 将图像序列绑定到滚动事件