如何使用jQuery动画步骤设置多个属性的动画?
在step函数中,道具值将一步一步来,即先缩放,然后是centerX,然后是centerY。我想使用CSS transform属性设置所有这些值,也就是说,我想在一个步骤中获得所有属性值。您可以使用fx对象在逐步执行时将这些值存储到变量中,然后在最终的CSS声明中一次性使用它们 您的问题是将所有其他变量设置为0,这可以通过在动画函数外部实例化变量,然后在每个条件语句中仅设置一个变量来避免。这将允许它们在迭代之间保持它们的值 下面是一个示例,您只需对代码进行一些修改即可更好地适应演示: $document.readyfunction{ 变量scaleVal,x,y; scaleVal=x=y=0; ${scale:0,centerX:0,centerY:0}。动画{ 比例:1, centerX:100, 中心:200 }, { 期限:2000年, 步骤:立即运行,fx{ 如果fx.prop==比例{ scaleVal=now; }如果fx.prop==centerX,则为else{ x=现在; }如果fx.prop==centerY,则为else{ y=现在; } $'div'.css webkit转换,translate+x*scaleVal-1+%,+y*scaleVal-1+%scale+scaleVal+; } }; }; div{ 宽度:50px; 高度:50px; 背景:bbb; } 您可以使用fx对象在逐步遍历变量时将值存储到变量中,然后在最终的CSS声明中一次性使用它们 您的问题是将所有其他变量设置为0,这可以通过在动画函数外部实例化变量,然后在每个条件语句中仅设置一个变量来避免。这将允许它们在迭代之间保持它们的值 下面是一个示例,您只需对代码进行一些修改即可更好地适应演示: $document.readyfunction{ 变量scaleVal,x,y; scaleVal=x=y=0; ${scale:0,centerX:0,centerY:0}。动画{ 比例:1, centerX:100, 中心:200 }, { 期限:2000年, 步骤:立即运行,fx{ 如果fx.prop==比例{ scaleVal=now; }如果fx.prop==centerX,则为else{ x=现在; }如果fx.prop==centerY,则为else{ y=现在; } $'div'.css webkit转换,translate+x*scaleVal-1+%,+y*scaleVal-1+%scale+scaleVal+; } }; }; div{ 宽度:50px; 高度:50px; 背景:bbb; }如何使用jQuery动画步骤设置多个属性的动画?,jquery,jquery-animate,Jquery,Jquery Animate,在step函数中,道具值将一步一步来,即先缩放,然后是centerX,然后是centerY。我想使用CSS transform属性设置所有这些值,也就是说,我想在一个步骤中获得所有属性值。您可以使用fx对象在逐步执行时将这些值存储到变量中,然后在最终的CSS声明中一次性使用它们 您的问题是将所有其他变量设置为0,这可以通过在动画函数外部实例化变量,然后在每个条件语句中仅设置一个变量来避免。这将允许它们在迭代之间保持它们的值 下面是一个示例,您只需对代码进行一些修改即可更好地适应演示: $doc
仅当所有属性都具有值时,才应设置元素的动画。这将减少回流次数并创建更平滑的动画 var animatedProperties={scale:0,x:0,y:0}, animatedPropertiesLength=3, updatedProperties=0, targetElement=$'target'; ${ 比例:0, x:0,, y:0 }.制作动画{ 比例:1, x:100, y:200 }, { 步骤:立即运行,fx{ animatedProperties[fx.prop]=现在; 如果++UpdateProperties==animatedPropertiesLength{ updatedProperties=0; targetElement.css'-webkit transform','translate'+animatedProperties.x*animatedProperties.scale-1+','+animatedProperties.y*animatedProperties.scale-1+'%scale'+animatedProperties.scale+; } } }; 目标{ 宽度:50px; 高度:50px; 背景:bbb; -webkit转换:scale0; }
仅当所有属性都具有值时,才应设置元素的动画。这将减少回流次数并创建更平滑的动画 var animatedProperties={scale:0,x:0,y:0}, animatedPropertiesLength=3, updatedProperties=0, targetElement=$'target'; ${ 比例:0, x:0,, y:0 }.制作动画{ 比例:1, x:100, y:200 }, { 步骤:立即运行,fx{ animatedProperties[fx.prop]=现在; 如果++UpdateProperties==animatedPropertiesLength{ updatedProperties=0; targetElement.css'-webkit transform','translate'+animatedProperties.x*animatedProperties.scale-1+','+animatedProperties.y*animatedProperties.scale-1+'%scale'+animatedProperties.scale+; } } }; 目标{ 宽度:50px; 高度:50px; 背景:bbb; -webkit转换:scale0; }
$(element).animate(
{
scale: 1,
centerX: -(this.chartObj.model.m_AreaBounds.Width /2),
centerY:-(this.chartObj.model.m_AreaBounds.Height /2)
},
{
duration: 2000,
step: function(now,fx) {
var scaleVal, x, y;
if (fx.prop == "scale") {
scaleVal = now;
x = 0;
y = 0;
} else if (fx.prop == "centerX") {
x = now;
y = 0;
scaleVal = 0;
}
else if (fx.prop == "centerY") {
x = 0;
y = now;
scaleVal = 0;
}
$(element).attr("transform", "translate("+x*(scaleVal-1)+","+(y*scaleVal-1)+")scale(" + now + ")");
}
}
);