JavaScript动画

CUD*_*UDA 12 javascript animation

我试图在JavaScript中水平div移动动画200px.

下面的代码使它跳过像素,但有没有办法让它看起来不使用jQuery动画?

function () {
    var div = document.getElementById('challengeOneImageJavascript');
    div.style.left = "200px";
}
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 45

这是一个基本的动画设置:

function animate(elem,style,unit,from,to,time) {
    if( !elem) return;
    var start = new Date().getTime(),
        timer = setInterval(function() {
            var step = Math.min(1,(new Date().getTime()-start)/time);
            elem.style[style] = (from+step*(to-from))+unit;
            if( step == 1) clearInterval(timer);
        },25);
    elem.style[style] = from+unit;
}
Run Code Online (Sandbox Code Playgroud)

使用:

animate(
    document.getElementById('challengeOneImageJavascript'),
    "left","px",0,200,1000
);
Run Code Online (Sandbox Code Playgroud)

此示例将使给定元素的动画在1秒(1000毫秒)的时间内从0px线性滑动到200px.

  • 好吧,这一切都是在我发现 CSS3 过渡之前写的。此时我强烈建议您使用过渡而不是手动动画,因为这为您提供了[无限范围的功能](http://cubic-bezier.com/) 来制作动画。有了这个,你只需要 JavaScript 来做`document.getElementById('...').style.left = '200px';` 并且它会自动动画。 (2认同)

Cal*_*ein 8

您可以通过CSS3-Transition轻松完成此操作:

#challengeOneImageJavascript {
    -webkit-transition: left .2s;
       -moz-transition: left .2s;
         -o-transition: left .2s;
            transition: left .2s;
}
Run Code Online (Sandbox Code Playgroud)

但是,它不受IE9和早期浏览器版本的支持.