如何防止css关键帧动画页面加载
How to prevent css keyframe animation on page load?
我有一些CSS动画与关键帧在我的页面淡出/淡出元素。问题是,当我加载页面时,淡出动画显示。
HTML:<button class="toggle-good">Toggle display</button>
<p class="box">I move nicely!</p>
CSS: .box {
height: 0;
opacity: 0;
animation: FadeOut 1s ease-in-out;
}
.box.active {
height: initial;
opacity: 1;
animation: FadeIn 1s ease-in-out;
}
@keyframes FadeIn {
0% {
opacity: 0;
height: initial;
}
100% {
opacity: 1;
height: initial;
}
}
@keyframes FadeOut {
0% {
opacity: 1;
height: initial;
}
99% {
opacity: 0;
height: initial;
}
100% {
height: 0;
opacity: 0;
height: 0;
}
}
JS:
$('button').on('click', function(e) {
$(this).siblings('.box').toggleClass('active');
})
工作的例子:http://codepen.io/MickL/pen/LkvWaA
你需要做的就是:animation-play-state: paused;
然而,看看你的合作伙伴,关键帧动画可能不是你最好的最好的。看起来你只是使用关键帧来确保你的一些属性只在动画结束时改变。幸运的是,实际上有一个转换定时功能!
- 使用过渡属性,使用步骤结束和步骤开始的可见性和指针事件。
- 指针事件,用来防止与隐藏元素交互。
- 当隐藏时从文档流中移除对象的最大高度。
我已经把一个快速代码笔组合在一起来展示一个例子。
http://codepen.io/SudoCat/pen/LkvyEJ?编辑= 0100
我尝试了不同的可能性。只有一个工作是通过JS使用超时和绝对定位隐藏它。
如果动画比设定的超时时间长,问题就出现了。或者动画需要在超时运行之前显示。
$('.box').css({
'position': 'absolute',
'top': '-9999px',
'left': '-9999px'
});
setTimeout(function() {
$('.box').css({
'position': 'relative',
'top': 'auto',
'left': 'auto'
});
}, 500);
相关文章:
- 如何在生成下载文件时显示加载动画
- jQuery Lazy加载动画滚动
- 先预加载动画gif
- Highcharts如何显示在设置数据时加载动画
- 如何实现 ladda-bootstrap 按钮加载动画
- 三.js:如何从Web-worker加载动画.json模型
- 在谷歌地图信息窗口中加载动画
- “预加载动画”隐藏所有酷滑块介绍动画
- Iframe加载动画不起作用
- 如何在加载前添加加载动画
- 在页面加载的所有其他文件之后加载动画 gif
- 显示加载动画,直到出现
- JQuery 多个加载动画循环,具有多个选项卡的错误
- 如何在 JS 中使用 .load 时显示“加载”动画
- 如何在加载屏幕后停止加载动画
- Jquery - 正在加载动画问题
- 在函数完成时显示加载动画
- 加载动画在第二次 ajax 调用之前消失
- 设置在单击提交后加载动画的时间
- jQuery 加载动画 hide(), show() 错误