在同一对象上添加第二个动画将删除css属性
Adding second animation on same object removes css properties
我正在尝试使用div
和border-bottom
属性创建进度条。
我有两个班:
anim-start
:这使进度条从0变为70%anim-end
:这使进度条达到100%,并且他们删除了边界
我正在使用属性animation-fill-mode: forwards
,以便css属性保持不变。
问题是,当我应用第二个类时,它会删除前面类的属性,因此进度条就会消失。
请看下面的小提琴:
var progress_bar = document.querySelector(".progress")
progress_bar.className = progress_bar.className + " anim-start";
setTimeout(function() {
progress_bar.className = progress_bar.className + " anim-end";
}, 3000);
.progress.anim-start {
animation-duration: 2s;
animation-name: progress-start-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-start-anim {
0% {
border-bottom: 5px solid #333;
width: 0%;
}
100% {
border-bottom: 5px solid #333;
width: 70%;
}
}
.progress.anim-end {
animation-duration: 2s;
animation-name: progress-end-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-end-anim {
99% {
width: 100%
}
100% {
border-bottom: none;
}
}
<div class="progress">
</div>
您可以让第二个动画从第一个动画结束的地方开始:
var progress_bar = document.querySelector(".progress")
progress_bar.className = progress_bar.className + " anim-start";
setTimeout(function() {
progress_bar.className = progress_bar.className + " anim-end";
}, 3000);
.progress.anim-start {
animation-duration: 2s;
animation-name: progress-start-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-start-anim {
0% {
border-bottom: 5px solid #333;
width: 0%;
}
100% {
border-bottom: 5px solid #333;
width: 70%;
}
}
.progress.anim-end {
animation-duration: 2s;
animation-name: progress-end-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-end-anim {
0% {
border-bottom: 5px solid #333;
width: 70%;
}
99% {
width: 100%
}
100% {
border-bottom: none;
}
}
<div class="progress">
</div>
版本不起作用的原因是第二个动画被第一个覆盖,而第二个中缺少border-bottom:
属性。
var progress_bar = document.querySelector(".progress")
progress_bar.className = progress_bar.className + " anim-start";
setTimeout(function() {
progress_bar.className = progress_bar.className + " anim-end";
}, 3000);
.progress.anim-start {
animation-duration: 2s;
animation-name: progress-start-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-start-anim {
0% {
border-bottom: 5px solid #333;
width: 0%;
}
100% {
border-bottom: 5px solid #333;
width: 70%;
}
}
.progress.anim-end {
animation-duration: 2s;
animation-name: progress-end-anim;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes progress-end-anim {
0% {
border-bottom: 5px solid #333;
/* */
}
99% {
width: 100%
}
100% {
border-bottom: none;
}
}
<div class="progress">
</div>
相关文章:
- 如何在NativeScript中从列表中删除项目时设置动画
- 关于使用Animate.css向和项添加和删除动画类的问题
- 如何动画删除悬停后的背景
- 每次在动画之后完全删除该元素.- 仅使用 CSS
- 从导航按钮 JavaScript 中删除动画
- 单击时取消动画,单击时删除类
- 在传单API中添加或删除ImageOverlay时的动画
- 在追加和删除元素时启动 CSS 动画
- 由添加/删除类组成的循环“动画”
- 来回导航时删除/取消UI路由器中的动画
- 在动画过程中删除元素
- 添加/删除类和动画元素的不同方法
- 在加载 iframe 后删除加载器动画
- ios 风格 滑动删除动画在电话间隙
- 如何在不刷新的情况下删除动态创建的表行(最好使用标准的向左滑动动画)
- 运行动画,然后删除元素
- 在火狐中使用 JQuery 动画删除表行
- 删除对象时执行元素指令动画的角度方式
- 删除 css 动画不起作用
- Jquery动画删除弹出错误信息-初学者