jQuery停止动画方法

时间:2016-09-02 16:14:26

标签: javascript jquery animation

我有这个旋转div,我希望它在我使用.stop()方法单击按钮时停止,但由于某种原因它不起作用。我希望你能为我解释这个问题。

这是一个片段,用于执行动画并演示Stop animation按钮不会停止动画。

$('button').bind('click', function(){
    $('.player-disc').stop(true, false);
});
#player {
  position: relative;
  margin: 30px auto;
  height: 300px;
  width: 700px;
  background-color: #E25822;
  -moz-border-radius: 200px;
  -webkit-border-radius: 200px;
  border-radius: 200px;
}
#player .player-disc {
  -moz-animation: spin 5s infinite linear;
  -webkit-animation: spin 5s infinite linear;
  animation: spin 5s infinite linear;
  height: 250px;
  width: 250px;
  background-color: black;
  background-size: 250px;
  position: absolute;
  top: 50%;
  left: 25px;
  transform: translateY(-50%);
}

#player .player-disc span {
  position: absolute;
  width:30px;
  height: 30px;
  background-color:white;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
}

@keyframes spin {
  0% {
    transform: translateY(-50%) rotate(0deg);
  }
  100% {
    transform: translateY(-50%) rotate(360deg);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button">Stop animation</button>
<div id="player">
  <div class="player-disc">
  <span></span>
  </div>
</div>

我还尝试了.stop(false, false)等的任何其他组合。

jsFiddle

4 个答案:

答案 0 :(得分:3)

这是一个CSS动画,而不是jQuery动画,所以你只需要将css animation属性设置为"none"

$('.player-disc').css('animation', 'none');

答案 1 :(得分:1)

您的动画正在CSS中初始化。因此,您必须通过CSS停止它。 $(".player-disc").css("animation-play-state", "paused");

答案 2 :(得分:1)

正如其他人指出的那样,它是CSS动画。

要停止它并将光盘重置为其原始位置使用(这也会重置动画):

$('.player-disc').css('animation', 'none');

要暂停它并且不将光盘重置到其原始位置,请使用:

$('.player-disc').css('animation-play-state', 'paused');

然后您可以使用以下方式恢复动画:

$('.player-disc').css('animation-play-state', 'running');

&#13;
&#13;
$('#btn1').bind('click', function(){
    $('.player-disc').css('animation', 'none');
});
$('#btn2').bind('click', function(){
    $('.player-disc').css('animation-play-state', 'paused');
});
$('#btn3').bind('click', function(){
    $('.player-disc').css('animation-play-state', 'running');
});
&#13;
#player {
  position: relative;
  margin: 30px auto;
  height: 300px;
  width: 700px;
  background-color: #E25822;
  -moz-border-radius: 200px;
  -webkit-border-radius: 200px;
  border-radius: 200px;
}
#player .player-disc {
  -moz-animation: spin 5s infinite linear;
  -webkit-animation: spin 5s infinite linear;
  animation: spin 5s infinite linear;
  height: 250px;
  width: 250px;
  background-color: black;
  background-size: 250px;
  position: absolute;
  top: 50%;
  left: 25px;
  transform: translateY(-50%);
}

#player .player-disc span {
  position: absolute;
  width:30px;
  height: 30px;
  background-color:white;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  cursor: pointer;
}

@keyframes spin {
  0% {
    transform: translateY(-50%) rotate(0deg);
  }
  100% {
    transform: translateY(-50%) rotate(360deg);
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn1" type="button">Set animation to none</button>
<button id="btn2" type="button">Pause animation</button>
<button id="btn3" type="button">Play animation</button>
<div id="player">
  <div class="player-disc">
  <span></span>
  </div>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这段代码......

 $("button").click(function(){
$('.player-disc').css('animation', 'none');
 });

Fiddle