使元素在CSS中的动画延迟过程中保持隐藏状态

问题描述:

我有一个元素可以从屏幕上滑过,然后在相反的一侧滑动并“降落”。我已经下了动画,但似乎在延迟期间,图像只是在等待的页面上。延迟是因为我有另一个动画需要在这个动画开始之前完成。使元素在CSS中的动画延迟过程中保持隐藏状态

这里是我的CSS代码,我有一个反应前端

.tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    animation-duration: 3s; 
    animation-iteration-count: 1; 
    animation-direction: linear; 
    left: 90%; 
    animation-delay: 2s; 
} 


@keyframes test_css_moving_sideways { 
    0% { left: 0px; top: 0px;} 
    100% { left: 90%; top: 0px; } 
} 
+1

*“从屏幕上滑过我想看起来像脱离页面”* - 那么为什么你不启动它*实际*关闭页面?如在中,将“左”坐标设置为负值。然后它将被隐藏,直到动画将其带过页面的左边缘。 – nnnnnn

1)为了解决这个问题通过类引用它,这样它坐落在0%你可以在CSS设置left属性,以便再当你的动画开始时,它不必移动到0%(动画开始的地方)的左边,因为它已经在那里:)

2)添加animation-fill-mode - 这控制着动画结束时会发生什么。这个值设置为forwards将从动画结束的CSS应用于对象

所以修改你的CSS:

.tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    animation-duration: 3s; 
    animation-iteration-count: 1; 
    animation-direction: linear; 
    left: 0%; 
    animation-delay: 2s; 
    animation-fill-mode: none, forwards; 
} 
+0

是的,但是当动画结束时,它会回到屏幕的左侧,因为这就是css在'left:0%'所告诉它的内容,'所以我如何让它从左侧隐藏起来,或者在屏幕外,动画到右边,然后保持在右边 – KellysOnTop23

+1

@ KellysOnTop23啊对不起,我误解了:)你需要做的是设置动画填充模式:转发;这将保持动画结束的对象:)用新的代码行修改了我的原始答案 - 现在就试试 – Jesus

+0

animation-fill-mode做到了!谢谢@Ryan Earnshaw – KellysOnTop23

检查codepen:https://codepen.io/sasssssha/pen/Nayzpg

您应该创建一个多个类( .testerAnimated),并将该类名添加到带有js函数的元素(如果您想在特定时间内使用动画),或者您可以一次添加它(在这种情况下,动画会在页面加载时启动)。检查它:

.testerAnimated{ 
    animation-name: test_css_moving_sideways; 
    animation-duration: 4.5s;   //play with it 
    animation-delay: 2s; 
    }  

    .tester{ 
    position: relative; 
    animation-name: test_css_moving_sideways; 
    left: 90%; 
    visibility:hidden; 
} 


@keyframes test_css_moving_sideways { 
    0% { left: 0px; top: 0px;visibility:visible;} 
    100% { left: 90%; top: 0px;visibility:visible;} 
} 
+0

我对此项目有所反应,我知道jQery很简单,但是如何反应? – KellysOnTop23

+1

加上这段代码不会保留在动画发送到那里后的右侧 – KellysOnTop23

+0

@ KellysOnTop23你在哪看到我的代码中使用JQuery ?????? – user8685433