jquery在滚动时淡入淡出/不透明度,但返回顶部时禁用
jquery在滚动时淡入淡出/不透明度,但返回顶部时禁用,jquery,Jquery,$(窗口)。滚动(函数(){ if($(this).scrollTop()>100 | |$('.header,.footer').css('opacity')==1){ 如果($(窗口).width()>478) { var elem=$('.header,.footer'); setTimeout(函数(){ css({“不透明度”:“0”,“转换”:“2s”}); },5000); css({“不透明”:“1”,“过渡”:“1s”}); } }否则{ 返回fals
$(窗口)。滚动(函数(){
if($(this).scrollTop()>100 | |$('.header,.footer').css('opacity')==1){
如果($(窗口).width()>478)
{
var elem=$('.header,.footer');
setTimeout(函数(){
css({“不透明度”:“0”,“转换”:“2s”});
},5000);
css({“不透明”:“1”,“过渡”:“1s”});
}
}否则{
返回false;
}
});代码>
.header{top:0;位置:固定;宽度:100%;高度:50px;背景:红色;}
.content{高度:1500px;}
.footer{底部:0;位置:固定;宽度:100%;高度:50px;背景:红色;}
只需添加一项检查,查看用户滚动的距离:
$(window).scroll(myController);
function myController() {
if($(window).width() > 1199 && $(document).scrollTop() > 50) {
var elem = $('.header,.footer');
setTimeout(function() {
elem.css({"opacity":"0","transition":"2s"});
},10000);
elem.css({"opacity":"1","transition":"1s"});
}
}
注意1:您应该取消滚动事件的盎司,因为它会触发
非常频繁。请参见一个流行的库或一个实现
注2:您还应该缓存选择器($(窗口)
和$('.header,.footer')
),因为每个滚动事件都会查找atm页眉和页脚。您还需要检查不透明度和顶部,以便可以在下面使用
$(window).scroll(function () {
if ($(this).scrollTop() > 10 || $('.header,.footer').css('opacity') ==1) {
if($(window).width() > 1199)
{
var elem = $('.header,.footer');
setTimeout(function() {
elem.css({"opacity":"0","transition":"2s"});
},10000);
elem.css({"opacity":"1","transition":"1s"});
}
} else {
return false;
}
});
你好,谢谢你的回答。我不确定原因是否是去盎司,但当返回顶部脚本仍在工作/循环。scrollTop()>50)指令在启动时工作正常,同时setTimeout(函数()在滚动时工作正常,但如果滚动回顶部,脚本仍在循环,但我需要一些东西来停止函数(默认不透明度=1)试图关闭所有其他脚本,但没有结果是否因为超时值太长?在您最初的帖子中,您的代码的超时时间为10000
,即10秒。如果您减少(或删除它?),当滚动到顶部时,问题是否仍然存在?是的,如果设置为40002000甚至200,则不会发生任何情况,如果完全删除-即使在滚动时也不工作。老实说,使用不透明隐藏是个坏主意,我将尝试使用显示/隐藏或其他方式。谢谢您的时间!您好,谢谢。同上。当返回顶部时“.scrollTop()>10”指令不再工作,“setTimeout(function()”仍在循环,但我只需要在滚动时隐藏元素,而不需要在topokay上隐藏元素,因此您需要停止setTimeout()。您可以在clearTimeout()中设置其他条件。正在尝试..2h:),但运气不好。我认为此方法有问题。可能是.scrollTop()>…和setTimeout..可能是不同的函数,我不知道。无论如何,谢谢你的时间。我会尝试其他的,而不是隐藏。