旋转DIV在第二次点击时缓慢旋转

时间:2012-12-25 09:59:53

标签: javascript jquery html css3

我想我忽略了一些事情。这是一个非常简单的旋转瓶游戏。

使用Javascript / jQuery的

$('.bottle').on('click', function(e) {
    this.removeAttribute('style');
    var deg = 3000 + Math.round(Math.random() * 500);
    var css = '-webkit-transform: rotate(' + deg + 'deg);';

    this.setAttribute(
        'style', css
    );
});

CSS:

.bottle {
    width: 200px;
    height: 200px;
    background-image: url(img/bottle.png);
    -webkit-transition: -webkit-transform 6s ease-out;
}

HTML:

<div class="bottle"></div>

首次点击瓶子时,这非常有效。但从第二次点击开始,旋转非常慢?

3 个答案:

答案 0 :(得分:7)

试试这个:http://jsfiddle.net/sMcAN/

var i = 1;
$('.bottle').on('click', function(e) {
this.removeAttribute('style');
var deg = 3000 + Math.round(Math.random() * 500);
deg = ((-1) ^ i) * deg;

var css = '-webkit-transform: rotate(' + deg + 'deg);';
this.setAttribute('style', css);
i++;
});​

另一次更新:http://jsfiddle.net/sMcAN/2/

答案 1 :(得分:3)

这是因为首先,你将从0变为超过3000的值。但是,这个值总是在3000之内 - 因此差异不够大,而且它仍然需要你定义的6秒。

一种解决方案是确保您偏移该值并使其每次相差几千。

var i = 0, offset = [2000, 4000, 6000, 3000, 5000, 1000];

$('.bottle').on('click', function(e) {
  this.removeAttribute('style');

  var deg = offset[i] + Math.round(Math.random() * 500);
  i++;
  if (i > 5) {
    i = 0;
  }

  var css = '-webkit-transform: rotate(' + deg + 'deg);';

  this.setAttribute(
    'style', css
 );
});​

答案 2 :(得分:0)

math.round(math.random() * 1000);

试试