JQuery 动画 运行 步
JQuery animation running in step
我想 运行 一个动画在另一个动画的步骤中。不知何故,第二个动画的行为就像排队一样。
var checkTop = function(){
if( $(window).scrollTop() > 0 && $("#navigation").not(":animated") ){
$("#navigation").animate({backgroundColor: "rgb(20,20,20,0.95)"}, {duration: 300, queue: false})
}
else{
$("#navigation").animate({backgroundColor: "transparent"}, {duration: 300, queue: false})
}
}
$(document).ready(function(){
var $window = $(window);
$(".btn").click(function(){
var btnname = $(this).attr('id');
var section = btnname.replace('btn-','');
$('html, body').stop().animate(
{ scrollTop: $('#' + section).offset().top - 30},
{
duration: 700,
queue: false,
step:function(now, fx){
checkTop();
}
}
);
});
});
任何帮助将不胜感激。
事实证明,在检查导航栏是否已设置动画时,if 语句存在问题(显示为始终未设置动画)。同样有趣的是,当我用 || 替换 && 时,向下滚动动画效果很好。
为了解决检查问题,我添加了一个变量,如果导航栏未动画显示则设置为 0,如果可见则设置为 1。
var trigger = 0;
var checkTop = function(){
if( $(window).scrollTop() > 0 ){
if(trigger == 0){
$("#navigation").animate({backgroundColor: "rgb(20,20,20,0.95)"}, {duration: 700, queue: false})
trigger = 1;
}
}
else{
$("#navigation").animate({backgroundColor: "transparent"}, {duration: 700, queue: false})
trigger = 0;
}
}
我想 运行 一个动画在另一个动画的步骤中。不知何故,第二个动画的行为就像排队一样。
var checkTop = function(){
if( $(window).scrollTop() > 0 && $("#navigation").not(":animated") ){
$("#navigation").animate({backgroundColor: "rgb(20,20,20,0.95)"}, {duration: 300, queue: false})
}
else{
$("#navigation").animate({backgroundColor: "transparent"}, {duration: 300, queue: false})
}
}
$(document).ready(function(){
var $window = $(window);
$(".btn").click(function(){
var btnname = $(this).attr('id');
var section = btnname.replace('btn-','');
$('html, body').stop().animate(
{ scrollTop: $('#' + section).offset().top - 30},
{
duration: 700,
queue: false,
step:function(now, fx){
checkTop();
}
}
);
});
});
任何帮助将不胜感激。
事实证明,在检查导航栏是否已设置动画时,if 语句存在问题(显示为始终未设置动画)。同样有趣的是,当我用 || 替换 && 时,向下滚动动画效果很好。 为了解决检查问题,我添加了一个变量,如果导航栏未动画显示则设置为 0,如果可见则设置为 1。
var trigger = 0;
var checkTop = function(){
if( $(window).scrollTop() > 0 ){
if(trigger == 0){
$("#navigation").animate({backgroundColor: "rgb(20,20,20,0.95)"}, {duration: 700, queue: false})
trigger = 1;
}
}
else{
$("#navigation").animate({backgroundColor: "transparent"}, {duration: 700, queue: false})
trigger = 0;
}
}