如何从当前翻译中应用css3动画?

时间:2014-03-18 04:25:28

标签: css3 animation webkit

我有一个目前正在翻译的盒子,但当我对它应用摇动动画时,它会跳到屏幕的左上角。

我想从它当前的位置上撼动它。我怎么能这样做?

这是我的傻瓜。请在webkit浏览器中查看(chrome / safari)

http://jsfiddle.net/foreyez/atv7R/

CSS:

div {
    background:red;
    width:100px;
    height:100px;
    -webkit-transform: translate3d(50px, 50px, 0px);
}

@-webkit-keyframes shake {
    0% { -webkit-transform: translateX(3px); }
    50% { -webkit-transform: translateX(-3px); }
    100% { -webkit-transform: translateX(0); }
}
.shake {
    -webkit-animation-name: shake;
    -webkit-animation-duration: 150ms;
    -webkit-animation-iteration-count: 20;
    -webkit-animation-timing-function: linear;
}

HTML:

<div></div>

JAVASCRIPT:

$('div').addClass('shake')

2 个答案:

答案 0 :(得分:0)

我最终使用了move.js

http://visionmedia.github.io/move.js/

他们用.then()命令做我想做的事。有一天,我会查看代码,看看他们是如何做到的,因为它完全是用翻译完成的。

答案 1 :(得分:-1)

您可以使用jQuery为位置设置动画,然后添加带有关键帧动画的类以获得所需的效果。

http://jsfiddle.net/atv7R/3/

$('div').animate({
    top: 50,
    left: 50
}, 1000).addClass('shake');

或者你可以用css来完成同样的事情:

http://jsfiddle.net/atv7R/5/

div {
    position:absolute;
    top: 10px;
    left:10px;
    background:red;
    width:100px;
    height:100px;
}
@-webkit-keyframes shake {
    0% {
        -webkit-transform: translate3d(0px, 0px, 0px);
    }
    50% {
        -webkit-transform: translate3d(3px, 3px, 0px);
    }
    100% {
        -webkit-transform: translate3d(0px, 0px, 0px);
    }
}
.shake {
    top: 50px;
    left: 50px;
    -webkit-transition: top 1s, left 1s;
    -webkit-animation-name: shake;
    -webkit-animation-delay: 1s;
    -webkit-animation-duration: 150ms;
    -webkit-animation-iteration-count: 20;
    -webkit-animation-timing-function: linear;
}