如何暂停 CSS 过渡?

sdv*_*ksv 2 html javascript css jquery

我需要在过渡期间随时暂停 CSS 过渡。我知道有一个计算过渡属性的当前值并直接应用它的解决方案,但是这给了我在 Safari 和 IE11 中“跳跃”的结果。

我的想法是将transition-duration价值增加到一些大的东西,这在我的理论中应该几乎暂停过渡,但似乎并非如此:

https://jsfiddle.net/j8p0msff/

$('#pause').on('click', function() {
    $('.ball').css('transition-duration: 5000s');
});
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?谢谢!

Maz*_*azz 6

过渡

一个解决方案是删除transition类并margin-left在停止时保存样式的当前状态(在示例中)。开始时只需transition再次添加类。

var boxOne = document.getElementsByClassName('box')[0];
var running = false;

var toggleTransition = function() {
  if(!running) 
  { 
    boxOne.classList.add('horizTranslate');
  } else {
    var computedStyle = window.getComputedStyle(boxOne),
        marginLeft = computedStyle.getPropertyValue('margin-left');
    boxOne.style.marginLeft = marginLeft;
    boxOne.classList.remove('horizTranslate');    
  }  

  running = !running;
}
Run Code Online (Sandbox Code Playgroud)
.box {
  margin: 30px;
  height: 50px;
  width: 50px;
  background-color: blue;
}
.box.horizTranslate {
  -webkit-transition: 3s;
  -moz-transition: 3s;
  -ms-transition: 3s;
  -o-transition: 3s;
  transition: 3s;
  margin-left: 50% !important;
}
Run Code Online (Sandbox Code Playgroud)
<div class='box'></div> 
<button class='toggleButton' onclick='toggleTransition()'>Toggle</button>
Run Code Online (Sandbox Code Playgroud)

动画

你可以使用: animation-play-state

使用例如 Javascript: document.getElementById('myId').style.animationPlayState = 'paused'

var toggleAnimation = function(){
  state = document.getElementById('myId').style.animationPlayState == 'paused' ? 'running' : 'paused';
  document.getElementById('myId').style.animationPlayState = state;
}
Run Code Online (Sandbox Code Playgroud)
div#myId {
    width: 100px;
    height: 100px;
    background: red;
    position: relative;
    -webkit-animation: mymove 5s infinite; /* Safari 4.0 - 8.0 */
    -webkit-animation-play-state: running; /* Safari 4.0 - 8.0 */
    animation: mymove 5s infinite;
    animation-play-state: running;
}

/* Safari 4.0 - 8.0 */
@-webkit-keyframes mymove {
    from {left: 0px;}
    to {left: 200px;}
}

@keyframes mymove {
    from {left: 0px;}
    to {left: 200px;}
}
Run Code Online (Sandbox Code Playgroud)
<div id='myId'></div>

<button onclick="toggleAnimation()">Toggle Animation</button>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

7612 次

最近记录:

8 年,8 月 前