Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将旋转从360度重置为0度时,如何避免逆时针旋转动画?_Javascript_Jquery_Css_Animation - Fatal编程技术网

Javascript 将旋转从360度重置为0度时,如何避免逆时针旋转动画?

Javascript 将旋转从360度重置为0度时,如何避免逆时针旋转动画?,javascript,jquery,css,animation,Javascript,Jquery,Css,Animation,我正在创建一个看起来像一个花式轮子的动画,当将旋转从360度重置为0度时,它以逆时针方向设置轮子的动画,如何避免这种情况 HTML JQuery jsiddle链接: 只要从代码中删除此部分,旋转角度就会增加 45 90 135 180 225 270 315 360 405 450等等 if(i >= nodes){ i = 0;} 我已经编辑了您的JSFIDLE,以便它在重置为0时不会设置旋转动画 执行此操作时,使用window.requestAnimationFrame会很有帮助,

我正在创建一个看起来像一个花式轮子的动画,当将旋转从360度重置为0度时,它以逆时针方向设置轮子的动画,如何避免这种情况

HTML JQuery jsiddle链接:


只要从代码中删除此部分,旋转角度就会增加
45 90 135 180 225 270 315 360 405 450等等

if(i >= nodes){
i = 0;}

我已经编辑了您的JSFIDLE,以便它在重置为0时不会设置旋转动画

执行此操作时,使用
window.requestAnimationFrame
会很有帮助,因为修改
transition
不是即时的


但当旋转角度无限大或超出范围时,浏览器可能会崩溃。您可以使用关键帧,但我想严格使用Javascript,因为我想用它做更多的事情,CSS关键帧不完全符合我的要求。在看到您对kva的第二条评论后,回答:可能尝试通过类添加CSS转换(例如,如果缺少该类,则不添加转换)。在重置之前删除该类,并在重置完成后将其添加回。
$Brdr: #7d868c;
  *{
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    &:before,&:after{
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
  }
  %notaList{
    margin: 0;
    padding: 0;
    list-style: none;
  }

  $node: 8;
  $s: 80px;
  $rotation: 0;

  .cm{
    top: 50%;
    left: 0;
    right: 0;
    width: $s;
    height: $s;
    margin: auto;
    display: block;
    position: absolute;
    transition: transform 0.8s ease-out;
    transform:rotate(#{$rotation}deg);
    @extend %notaList;
    background: rgba(#000, 0.5);
    border-radius: 50%;
    li{
      left: 0;
      top:-($s*2 - ($s/2));
      color:#333;
      width:90%;
      height: 90%;
      display: block;
      position: absolute;
      margin-bottom: ($s*2 - ($s/2));

      & > span{
        display: block;
        padding: 36%;
        text-align: center;
        overflow: hidden;
        background: #CCC;
        border-radius: 5px 5px 50% 50%;
        transition: transform 0.8s ease-out;
      }
      @for $i from 1 through $node{
        &:nth-child(#{$i}n) {
          transform-origin: 50% ($s*2);
          transform: rotate(($i - 1) * 360deg/$node);
          & > span {
            transform:rotate(($rotation * -1) - (($i - 1) * 360deg/$node));
          }
        }
      }
    }
  }
var i = 1,
    nodes = 8;

setInterval(function(){
  var rotation = i * 360 / nodes;
  i = i + 1;

  $('.cm').css({
    'transform': 'rotate(' + rotation + 'deg)'
  }).attr('data-rotation', rotation);

  $('.cm li').each(function (node){
    r = (node) * 360/nodes;
    $($('.cm li')[node]).find('span').css({
      'transform': 'rotate(' + ((rotation*-1) - r) + 'deg)'
    });
  });

  if(i >= nodes){
    i = 0;
  }
}, 1000);
if(i >= nodes){
i = 0;}