难以在Android浏览器中停止无限的CSS动画

时间:2012-10-24 20:54:17

标签: javascript android css3 animation webkit-animation

我在Android 4.x浏览器/ webview中停止或暂停动画的运气很少。我将-webkit-animation-iteration-count设置为无限,并且在Chrome / Safari中停止它没有问题,但如果该元素具有动画的子项,则在Android中失败。

我的HTML:

<div id="css-container" onclick="stopAnim();">
    <div id="content">Content</div>
</div>

我的JS:

function stopAnim() {
    // cssContent.classList.toggle('css-container-anim');
    cssContainer.classList.toggle('css-container-anim');
}

var cssContainer = document.getElementById("css-container");
var cssContent= document.getElementById("content");

cssContainer.classList.toggle('css-container-anim');
cssContent.classList.toggle('css-container-anim');

您可以在此fiddle中看到问题。如果我取消注释内容的停止(删除动画类),那么我可以停止动画。

我想这可能是一些我无法理解的冒泡问题?还是Android漏洞?我也尝试过通过JS直接操作样式,并将webkitAnimationPlayState设置为暂停而不是更改类,但是没有任何改变。

请注意,这款小提琴适用于Android上的Chrome浏览器,但不适用于股票浏览器 - 因为webview,我需要这样做。

3 个答案:

答案 0 :(得分:0)

我无法找到任何来源来确认这一点,但我相信div可能不会为触摸设备发送onclick事件。我在http://jsfiddle.net/f2XaP/4/创建了一个测试,我处理<a>的onclick,它似乎可以在我的iPhone上运行。

答案 1 :(得分:0)

我找到了问题的解决方法。删除溢出:隐藏;从容器允许动画停止。去图。

编辑:虽然这有效,但动画会在启动/停止时遇到断断续续的情况,因此它不是理想的解决方案。

答案 2 :(得分:0)

这解决了我(非常相似)的问题:

    $el.removeClass('THE_ANIMATION').css('opacity', 0.99);
    window.setTimeout(function () {
      $el.css('opacity', 1); 
    }, 0);