CSS 淡入淡出过渡(无 jQuery)

标签 css css-animations

我正在尝试在我正在编写的玩具 SPA 中的内容更改之间创建视觉转换。为此,我定义了一个简单的类来为元素的不透明度设置动画。

.fade {
  transition: opacity 1.5s;
}

在我的渲染函数中,我现在在内容更改后更改我的 outlet div 的不透明度,如下所示:

function render(content) {
  var outlet = document.getElementById("outlet");  

  outlet.classList.remove("fade");
  outlet.style.opacity = 0;

  outlet.innerHTML = content;
  outlet.classList.add("fade");
  outlet.style.opacity = 1;
}

不幸的是,动画永远不会触发。当我通过 setTimeout 将不透明度更改为 1 延迟 10 毫秒时,比如说,如果我在动画仍在运行时不再更改内容,它有时会起作用,这表明时间问题/竞争条件。

我过去使用类似的方法来淡出消息,但我故意将不透明度的更改延迟几秒钟,以便用户可以在消息开始淡出之前阅读消息。

最佳答案

纯CSS动画fadeIn

li {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -75px;
}

.logo {
  width: 300px;
  height: 150px;
  background: red;
  margin-left: -150px;
  z-index: 30;
  -webkit-animation: fade-in-slogan 4s .2s ease-in forwards;
     -moz-animation: fade-in-slogan 4s .2s ease-in forwards;
          animation: fade-in-slogan 4s .2s ease-in forwards;
}

.menu {
  width: 600px;
  height: 150px;
  background: blue;  
  margin-left: -300px;
  opacity: 0;
  -webkit-animation: fade-in-menu 3s 4s ease-out forwards;
     -moz-animation: fade-in-menu 3s 4s ease-out forwards;
          animation: fade-in-menu 3s 4s ease-out forwards;
}


@-webkit-keyframes fade-in-slogan {
  0%   { opacity: 0; }
  30%  { opacity: 1; }
  50%  { opacity: 1; }
  70%  { opacity: 1; }
  100% { opacity: 0; } 
}

@-webkit-keyframes fade-in-menu {
  0%   { display: block; opacity: 0;  }
  30% { display: block; opacity: .3; }
  60% { display: block; opacity: .6; }
  80% { display: block; opacity: .8; }
  100% { display: block; opacity: 1; } 
}
<ul class"main">
  <li class="logo"></li>
  <li class="menu"></li>
</ul>
     

关于CSS 淡入淡出过渡(无 jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59173710/

相关文章:

javascript - 如何让置顶的大图变小,最后粘在置顶?

javascript - Angular 无法识别来自 css3 的图像的静态路径

jquery - 循环关键帧css3动画8次

css - 关键帧动画在 Chrome 中有效,但在 Firefox 中无效

css - 将元素向左移动更多,而不通过调整大小移动元素

html - 使用用户选择 : none 的 mousedown+mousemove 性能糟糕

css - Firefox 3.6 for Mac 字体问题(选错字体)

javascript - Css3 Animate 它在对象进入视口(viewport)之前进行动画处理

html - 使用 CSS 旋转 div

html - 使用字母 "D"的 CSS 自定义微调器