css - 将显示与 css3 动画一起使用?如何在动画期间/之后隐藏/取消隐藏元素?

标签 css animation sass css-animations

我有一个 div,我需要将它的不透明度设置为 1 - 0 的动画,然后隐藏它,正如你们中的一些人可能知道的那样,添加显示属性只是覆盖过渡值并立即隐藏元素,所以我想知道如果有一种方法可以使用 css 为其不透明度设置动画,然后将其隐藏?

这是我尝试过的:

@keyframes infrontAnimation {
  0% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 1;
  }
  50% {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
  }
  100% {
    display: none;
  }
}

这不起作用,它只是直接隐藏,它也不会保持在 100% 值:

像这样使用它:

动画:infrontAnimation 1s 2s ease-out;

所以我的问题是,有没有可能隐藏一些东西,但只有在某个动画完成之后?

最佳答案

我没有设置元素的高度或宽度,而是找到了一种不同的方法,对我来说,它不像将高度强制设置为 99.9% 那样狡猾。这是我想出的:

首先,我没有使用 display 来隐藏和显示它,而是使用了 visibility,因为它仍然可以打断我们的动画并最终导致它失败,我最初设置了我们的过渡属性:

注意:我会为这个演示保留其他前缀:

.item {        
    transition: visibility 0s linear 0.7s, opacity 0.7s ease-in-out;
}

所以我们所做的是将 visibility 属性的过渡设置为 0,但将其延迟到完成淡出(不透明度)所需的时间;

所以当我们希望它可见时,我们添加visilble这个类:

.item.visible {
    transition-delay: 0s;
    visibility: visible;
    opacity: 1;
}

所以我们在这里将延迟设置为 0,以便我们可以在状态转换时覆盖状态,显然我们不想延迟可见性,我们想直接设置它然后设置不透明度动画;

然后当我们想隐藏它的时候:

.item.hidden {
    opacity: 0; 
    visibility:hidden;
}

然后这一切所做的就是将我们的不透明度转换回 0,并将我们的延迟保留为 0.7,这样它在不透明度完成之前不会真正“消失”在 dom 中。

Detailed Working Example

关于css - 将显示与 css3 动画一起使用?如何在动画期间/之后隐藏/取消隐藏元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500222/

相关文章:

javascript - 如何附加按比例缩小的大宽度 Canvas ,以使页面宽度不会变大

html - 中心 div 和适合的内容?

java - 使用 Selenium 从 header (<H></H>) 中获取数据

CSS3 动画在 XP 中不起作用?

c# - WPF Storyboard动画不起作用

reactjs - webpack 配置加载 sass 变量无需 import 语句

css - sass和scss有区别吗?

javascript - 如何在没有文本的情况下使 anchor 标记可点击

android - 主从流 Android 动画 API

css - 仅为特定 div 内的所有元素重置 rem 或字体大小