我正在尝试更改滚动事件的css,它正在运行。
$(window).scroll(function () {
$(".navcont").css("background-color", "pink")
});
但是,当我试图给予延迟并将其改回时,
$(window).scroll(function () {
$(".navcont").css("background-color", "pink")
.delay( 5000 )
.css("background-color", "white");
});
它总是呈现粉红色,但我想先将白色延迟然后再变成粉红色。
有人可以帮我这个! 提前谢谢
答案 0 :(得分:1)
尝试仅使用setTimeout
,不使用animate
:
$(window).scroll(function () {
$(".navcont").css("background-color", "pink");
setTimeout(function() {$(".navcont").css("background-color", "white")}, 8000);
});
此处jsFiddle。
答案 1 :(得分:0)
我想到的第一件事就是使用.animate()
来获取回调,然后使用setTimeout
来延迟返回CSS:
$(window).scroll(function(){
$('.navcont').animate({backgroundColor:'pink'},1,function(){
var $this = $(this);
setTimeout(function(){
$this.css({backgroundColor:'white'});
},80000);
});
});
1
意味着动画的长度为1毫秒,这对于眼睛来说是不可见的,但我遇到了使用零的问题所以我只需添加一个值来满足回调。
答案 2 :(得分:0)
delay()函数仅适用于jQuery effects queue,而不适用于所有函数。效果如fadeIn,slideUp等。有一个名为animate()的自定义效果生成器,您可以将它与delay()一起使用。但是,您无法为背景颜色等非数字属性设置动画。所以这是一个技巧 -
$(window).scroll(function () {
$(".navcont")
.animate({dummyProperty: "dummyValue"},1,"linear",function(){
$(this).css("background-color","pink")
})
.delay( 80000 )
.animate({dummyProperty: "dummyValue"},1,"linear",function(){
$(this).css("background-color","blue")
});
});