在其他元素完成动画后动画某些元素

Posted

技术标签:

【中文标题】在其他元素完成动画后动画某些元素【英文标题】:Animating certain elements after others have finished their animation 【发布时间】:2019-04-29 15:11:55 【问题描述】:

我正在尝试构建一个带有一些简洁动画的登录页面。

我希望我的 span 元素仅在我的 content div 完成动画后显示。

知道如何解决这个问题吗?

这是我的代码和 CodePen 的 link:

帕格:

div.landing-page
  div.content
    span J
    span H
  input(type='button' id='button' value='click')

SASS:

html
  background: gray
  .landing-page
    .content
      width: 200px
      height: 2px
      background: black
      position: absolute
      left: 50%
      top: 50%
      transform: translate(-50%,-50%)
      animation: fade 2s cubic-bezier(0.165, 0.84, 0.44, 1) forwards
      span
        color: white
    .animated
      animation: grow 1s cubic-bezier(0.165, 0.84, 0.44, 1) forwards
    input#button
      position: absolute
      left: 50%
      top: 48%
      transform: translate(-50%,-50%)

@keyframes fade
  0%
    opacity: 0
  100%
    opacity: 1
@keyframes grow
  0%
    width: 0%
  70%
    width: 100%
    height: 2px
  100%
    width: 100%
    height: 100%

jQuery:

$(document).ready(function() 
    $('#button').click(function() 
        $(this).remove();
        $('.content').addClass('animated');
    );
);

【问题讨论】:

【参考方案1】:

你可以添加

overflow: hidden

到 css 中的 .content。在动画完成后,这将隐藏跨度,直到有足够的空间。

【讨论】:

谢谢先生!这是一个非常优雅的解决方案。抱歉回复晚了。【参考方案2】:

一种选择是使用settimeout。该函数在 X 毫秒后触发任何 js 函数或命令。所以你只需要计时。同样,这不是最美丽的方式,但会奏效。例如:

setTimeout( FunctioName, 2000);

请注意没有 () => 的函数名称只有名称。

【讨论】:

以上是关于在其他元素完成动画后动画某些元素的主要内容,如果未能解决你的问题,请参考以下文章

如果一个元素正在被动画,我如何用 jQuery 找出?

java - 如何在java脚本或css中完成动画后使元素可拖动?

基于尺寸元素的设备旋转期间的动画更改将在旋转完成后进行

为某些元素设置动画时遇到问题 UIView 将排除其他元素

JQ动画完成后切换类[重复]

如何防止在动画完成之前点击 html 元素?