我一直在尝试在jQuery中创建一个函数,以使div在向下滚动时比页面的其余部分更快地向上移动,并在相反的方向上使它执行相同的操作。
此功能有效,但冷却时间为1.5秒,可避免来自$(window).scroll(function()
的垃圾邮件。因此,人们在加入该网站后必须等待1.5秒才能正常工作,然后每次都需要等待1.5秒上下滚动才能看到效果完美的效果。
我该如何解决此延迟?为获得良好的用户体验,应该不延迟。 (转换函数来自库,这里没有问题。)
var $intervalReady = false;
setInterval(function(){if($intervalReady==false){
$intervalReady = true;
}}, 1500);
$( document ).ready(function() {
var $elementBeginPos = $('#headertext').position();
$(window).scroll(function(){
var top = $(this).scrollTop();
if(top > 60 && $intervalReady==true){
$('#headertext').transition({y:'30%'});
$intervalReady = false;
}
else if(top < 60 && $intervalReady==true){
$('#headertext').transition({y:'-30%'});
$intervalReady = false;
}
});
});
答案 0 :(得分:0)
这是一个有效的示例:https://jsfiddle.net/37khp0ft/ 适应您的需求。
通常,在计时器事件而不是滚动事件上更新状态。
JS部分:
function updatePos(selector, multiplier)
{
var scrollPos = $(document).scrollTop();
$(selector).css({top: scrollPos * multiplier});
}
$(document).ready(function()
{
setInterval(updatePos, 100,'#div', -1.1 );
});