Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery动画步骤设置多个属性的动画?_Jquery_Jquery Animate - Fatal编程技术网

如何使用jQuery动画步骤设置多个属性的动画?

如何使用jQuery动画步骤设置多个属性的动画?,jquery,jquery-animate,Jquery,Jquery Animate,在step函数中,道具值将一步一步来,即先缩放,然后是centerX,然后是centerY。我想使用CSS transform属性设置所有这些值,也就是说,我想在一个步骤中获得所有属性值。您可以使用fx对象在逐步执行时将这些值存储到变量中,然后在最终的CSS声明中一次性使用它们 您的问题是将所有其他变量设置为0,这可以通过在动画函数外部实例化变量,然后在每个条件语句中仅设置一个变量来避免。这将允许它们在迭代之间保持它们的值 下面是一个示例,您只需对代码进行一些修改即可更好地适应演示: $doc

在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; }
仅当所有属性都具有值时,才应设置元素的动画。这将减少回流次数并创建更平滑的动画

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 + ")");
        }
    }
);