CSS3过渡中止导致丑陋的动画

前端之家收集整理的这篇文章主要介绍了CSS3过渡中止导致丑陋的动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 CSS3步骤转换来将sprite从一个状态设置为另一个状态.

当我开始一个动画时,它一次显示一个帧并具有很好的过渡效果(点击example中的“显示/隐藏”链接).但是当第一个转换被触发而第一个转换仍在运行时,帧位置会丢失,看起来它会滚动到另一侧而不是保持逐帧动画(点击example中的“触发错误”).

.tree {
    width: 26px; /* one frame */
    height: 31px; /* frame height */
    background-image: url("http://rolandschuetz.at/docs/tree-animated.png");
    background-repeat: no-repeat;
    background-position: -234px 0; /* last frame */
    transition: background-position .8s steps(10); /* this triggers the CSS3 step transition */
}
.tree-hidden {
    background-position: 26px 0; /* clear,before first frame */
}

是否有办法强制动画即使在中止旧动画时也能正常工作?

PS:请不要尝试通过trigger-bug按钮“修复”,这只是为了演示目的.真正的问题是由快速用户交互触发的,应该立即反馈.

解决方法

Updated code

检查这是否对您有所帮助.

HTML

<div class="outer"> <!--Added this div-->
  <div class="tree"></div>        
</div>

CSS:

.outer {
    width: 26px;
    border: 1px solid grey;
}
.tree {
    width: 26px; /* one frame */
    height: 31px;

    background-image: url("http://rolandschuetz.at/docs/tree-animated.png");
    background-repeat: no-repeat;
    background-position: -234px 0; /* last frame */
    -webkit-transform: scale(1);
    margin: 0 auto;    
    /*Changed transition*/
    -webkit-transition: all .8s;
       -moz-transition: all .8s;
        -ms-transition: all .8s;
            transition: all .8s;
}
.tree-hidden {
    /* background-position: 26px 0; */ /* empty,before first frame */
    width: 0;
    -webkit-transform: scale(0);
}

猜你在找的CSS相关文章