Animate translate3d with jQuery

后端 未结 2 2000
别跟我提以往
别跟我提以往 2021-01-05 11:06

I\'m trying to animate translate3d with Jquery 2.1.1. in 10 seconds. Then, when the animation is complete, I want it to alert me. But the problem is that it does not animate

2条回答
  •  臣服心动
    2021-01-05 11:45

    Basically with animate and transform you have to use the step function of the animate function of jQuery which will look a bit like this:

    $('.animate').animate({
        'opacity': '320'
    }, {
        step: function (now, fx) {
            $(this).css({"transform": "translate3d(0px, " + now + "px, 0px)"});
        },
        duration: 10000,
        easing: 'linear',
        queue: false,
        complete: function () {
            alert('Animation is done');
        }
    }, 'linear');
    

    You would have to set the text-indent separately but basically what you were doing wrong was that every time the step function was called the value was set straight to 320px instead of as it goes. This can be tackled by having two separate functions and using unimportant css rules to create the values needed across the animation curve. You also need to set the queue to false so that the two animations happen at the same time and not one after the other

    The final snippet of code would look like this:

    $('.animate').animate({
        'opacity': '320'
    }, {
        step: function (now, fx) {
            $(this).css({"transform": "translate3d(0px, " + now + "px, 0px)"});
        },
        duration: 10000,
        easing: 'linear',
        queue: false,
        complete: function () {
            alert('Animation is done');
        }
    }, 'linear');
    $(".animate").animate({ textIndent: 100 }, {
        duration : 10000,
        easing: 'linear',
        queue: false
    });
    

    Here is a working fiddle:

    http://jsfiddle.net/Hive7/1qu2qxqh/

提交回复
热议问题