我第一次玩JS + CSS动画。 我试图用这些随机因素旋转一个div(或一堆独立的):
我设法收集了这个效果很好的脚本。它将id =“square”无穷大的div旋转到[random]方向,[random]度
function redo() {
$.fn.animateRotate = function(angle, duration, easing, complete) {
return this.each(function() {
var $elem = $(this);
$({deg: 0}).animate({deg: angle}, {
duration: duration,
easing: easing,
step: function(now) {
$elem.css({
transform: 'rotate(' + now + 'deg)'
});
},
complete: complete //|| $.noop
});
});
};
plusOrMinus = Math.random() < 0.5 ? -1 : 1;
randAngle = Math.floor(Math.random()*70+30) * plusOrMinus;
randDelay = Math.floor(Math.random()*3000+2000);
$('#square').animateRotate(randAngle);
timer = setTimeout(function() { redo(); },randDelay);
}
redo();
现在我遇到了一些困难:
swing
或linear
之类的任何宽松选项,也无法通过duration
和complete
答案 0 :(得分:1)
解决。
我使用了略有不同的脚本,但它现在有效。 我将Transition和Animation行添加到旋转元素的CSS中,
transition:2s;
animation:ease-in-out;
这似乎已经解决了锯齿状旋转的问题,让我加一些宽松。 然后我使用包装函数通过函数传递不同的元素。
<Script>
function rotate (elementID) {
var $rota = $(elementID),
degree = 0,
timer;
function spin() {
$rota.css({ transform: 'rotate(' + degree + 'deg)'}); // rotate element
plusOrMinus = Math.random() < 0.5 ? -1 : 1; // random spin direction
randAngle = Math.floor(Math.random()*70+50) * plusOrMinus; // random degrees
randDelay = Math.floor(Math.random()*1000+2000); //random delay
timer = setTimeout(function() { // set delay
degree += randAngle; // add random degree to current variable
spin(); // loop it
},randDelay);
}
spin(); // start first spin for element
};
rotate ('#square'); // run it
rotate ('#square2'); // run it again
</script>