Changing rotation speed of a DIV not working in IE 11, using JS to update CSS animation properties

后端 未结 1 1131
既然无缘
既然无缘 2021-01-21 03:23

I\'m trying to change the rotation speed of a DIV using simple buttons. It works in Chrome, but not IE. Is this a limitation of IE?

相关标签:
1条回答
  • 2021-01-21 04:08

    You have to remove and re-add the animation to get it to pick up the changes.

    After changing the speed, change the animation-name to a something else, then in a setTimeout, set animation-name back. It's a bit of a hack, but it does the trick.

    var speed = 3;
    document.getElementById("speedText").innerHTML = speed + "s";
    
    function changeSpeed(change) {
      speed = speed + change;
      document.getElementById("speedText").innerHTML = speed + "s";
      document.getElementById("rotationDiv").style.animationDuration = speed + "s";
      document.getElementById("rotationDiv").style.animationName = "x";
      setTimeout(function(){
        document.getElementById("rotationDiv").style.animationName = "";
      },0);
      $("#rotationDiv").load(location.href + " #rotationDiv");
    }
    #rotationDiv {
      width: 50px;
      height: 50px;
      margin-left: 10px;
      background-color: blue;
      animation-name: spin;
      animation-duration: 3s;
      animation-iteration-count: infinite;
      animation-timing-function: linear;
    }
    @keyframes spin {
      from {
        transform: rotate(0deg);
      }
      to {
        transform: rotate(360deg);
      }
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button id="button1" onclick="changeSpeed(-1)">Speed Up</button>
    <button id="button2" onclick="changeSpeed(1)">Slow Down</button>
    <p id="speedText"></p>
    <div id="rotationDiv"></div>

    0 讨论(0)
提交回复
热议问题