在 CSS 动画完成后更改左值
change left value after css animation has finished
我正在尝试运行一个div 滑入 veiw 和另一个div 滑出 veiw 的动画,但我认为发生的事情是代码运行太快并将显示设置为 none 因此您看不到动画发生,无论如何我可以先运行动画,然后设置显示和左值?
<script>
var pagenumon = '1';
function slide(pagenum){
var whichpage = 'page' + pagenum;
var waspage = 'page' + pagenumon;
if(pagenum > pagenumon){
document.getElementById(waspage).style.WebkitAnimation = "transition-left-out 0.5s";
document.getElementById(waspage).style.animation = "transition-left-out 0.5s";
document.getElementById(whichpage).style.WebkitAnimation = "transition-left-in 0.5s"; // Code for Chrome, Safari and Opera
document.getElementById(whichpage).style.animation = "transition-left-in 0.5s";
}else{
document.getElementById(waspage).style.WebkitAnimation = "transition-right-out 0.5s";
document.getElementById(waspage).style.animation = "transition-right-out 0.5s";
document.getElementById(whichpage).style.WebkitAnimation = "transition-right-in 0.5s"; // Code for Chrome, Safari and Opera
document.getElementById(whichpage).style.animation = "transition-right-in 0.5s";
}
if(pagenum == '1'){
document.getElementById('page1').style.left = '0%';
document.getElementById('page1').style.display = 'block';
document.getElementById('page2').style.left = '100%';
document.getElementById('page2').style.display = 'none';
document.getElementById('page3').style.left = '100%';
document.getElementById('page3').style.display = 'none';
document.getElementById('page4').style.left = '100%';
document.getElementById('page4').style.display = 'none';
document.getElementById('page5').style.left = '100%';
document.getElementById('page5').style.display = 'none';
document.getElementById('page6').style.left = '100%';
document.getElementById('page6').style.display = 'none';
}else{
if(pagenum == '2'){
document.getElementById('page1').style.left = '-100%';
document.getElementById('page1').style.display = 'none';
document.getElementById('page2').style.left = '0%';
document.getElementById('page2').style.display = 'block';
document.getElementById('page3').style.left = '100%';
document.getElementById('page3').style.display = 'none';
document.getElementById('page4').style.left = '100%';
document.getElementById('page4').style.display = 'none';
document.getElementById('page5').style.left = '100%';
document.getElementById('page5').style.display = 'none';
document.getElementById('page6').style.left = '100%';
document.getElementById('page6').style.display = 'none';
}else{
if(pagenum == '3'){
document.getElementById('page1').style.left = '-100%';
document.getElementById('page1').style.display = 'none';
document.getElementById('page2').style.left = '-100%';
document.getElementById('page2').style.display = 'none';
document.getElementById('page3').style.left = '0%';
document.getElementById('page3').style.display = 'block';
document.getElementById('page4').style.left = '100%';
document.getElementById('page4').style.display = 'none';
document.getElementById('page5').style.left = '100%';
document.getElementById('page5').style.display = 'none';
document.getElementById('page6').style.left = '100%';
document.getElementById('page6').style.display = 'none';
}else{
if(pagenum == '4'){
document.getElementById('page1').style.left = '-100%';
document.getElementById('page1').style.display = 'none';
document.getElementById('page2').style.left = '-100%';
document.getElementById('page2').style.display = 'none';
document.getElementById('page3').style.left = '-100%';
document.getElementById('page3').style.display = 'none';
document.getElementById('page4').style.left = '0%';
document.getElementById('page4').style.display = 'block';
document.getElementById('page5').style.left = '100%';
document.getElementById('page5').style.display = 'none';
document.getElementById('page6').style.left = '100%';
document.getElementById('page6').style.display = 'none';
}else{
if(pagenum == '5'){
document.getElementById('page1').style.left = '-100%';
document.getElementById('page1').style.display = 'none';
document.getElementById('page2').style.left = '-100%';
document.getElementById('page2').style.display = 'none';
document.getElementById('page3').style.left = '-100%';
document.getElementById('page3').style.display = 'none';
document.getElementById('page4').style.left = '-100%';
document.getElementById('page4').style.display = 'none';
document.getElementById('page5').style.left = '0%';
document.getElementById('page5').style.display = 'block';
document.getElementById('page6').style.left = '100%';
document.getElementById('page6').style.display = 'none';
}else{
if(pagenum == '6'){
document.getElementById('page1').style.left = '-100%';
document.getElementById('page1').style.display = 'none';
document.getElementById('page2').style.left = '-100%';
document.getElementById('page2').style.display = 'none';
document.getElementById('page3').style.left = '-100%';
document.getElementById('page3').style.display = 'none';
document.getElementById('page4').style.left = '-100%';
document.getElementById('page4').style.display = 'none';
document.getElementById('page5').style.left = '-100%';
document.getElementById('page5').style.display = 'none';
document.getElementById('page6').style.left = '0%';
document.getElementById('page6').style.display = 'block';
}}}}}}
window.pagenumon = pagenum;}
</script>
您无法看到动画,因为无法对display
进行动画处理。所以你应该做的是:
- 确保您有
overflow: hidden
,这样就不会出现额外的滚动 - 通过将
left
设置为100%
或其他任何内容来执行动画 - 应用延迟
display:none
例如:
setTimeout(function(){
document.getElementById('page6').style.display = 'none';
}, 500)
- 而且你肯定需要重构代码,隐藏东西绝对是一个单独的功能,你应该在某种循环中隐藏非活动页面,而不是通过在代码中重复它。
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 如何使用css动画从中心增加边界线
- 点击CSS动画
- 只在滚动时播放循环css动画-滚动停止时停止
- CSS动画暂停并使用javascript播放
- 使用javascript可以设置css动画的当前百分比
- 使用Jquery和'的CSS动画;.css'
- CSS动画背景图像的过渡越来越暗
- 单击css动画后丢失的事件
- CSS动画-显示和隐藏面板
- 更改javascript中的css动画
- Css动画-setTimeout没有't应用打断动画的更改
- firefox中的CSS动画不起作用
- 如何只有点击时才有CSS动画,而不是页面加载
- css动画和jquery.load()在移动设备上断断续续
- 如何在 CSS 动画遇到屏幕边缘时停止它
- CSS 动画将恢复为原始状态
- 通过javascript触发CSS动画
- CSS 动画在元素隐藏时暂停
- CSS 动画中的非动画帧序列