html - 当父 addclass css 动画有效但删除时它们仍然什么都不做?

标签 html css css-animations

$(document).on("scroll",function(){
  if( window.pageYOffset > 0 ) {
    $("body").addClass("scroll");
  }else{
    $("body").removeClass("scroll");
  }
})
@keyframes fade {
  0%,100% { opacity: 1 }
  30%,70% { opacity: 0 }
}

.logo{
  animation: fade 0.7s linear;
}

div{
  height: 1000px;
}
span{
  position: fixed;
  padding: 20px;
}
body.scroll span{
  animation: fade 0.7s linear;
}

@keyframes fade {
  0%,100% { opacity: 1 }
  30%,70% { opacity: 0 }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>test<span>hier</span></div>

看到“hier”淡出并再次出现,但如果您滚动到顶部,它们就会静止不动。我想要再次滚动到动画顶部。如果 body 成为类滚动并且他们删除。

我怎样才能只在 css 中做到这一点?

codepen

最佳答案

编辑:我想我误解了你的问题,抱歉!所以你希望跨度在向下和向上滚动时消失?但只有一次?


问题出在你的淡入淡出动画关键帧上,试试:

 @keyframes fade {
   0% { opacity: 1 }
   100%{ opacity: 0 }
  }

我还在span中添加了scroll类(你不应该将它添加到body标签中),并且在span中添加了一个小的transition,这样重新出现就不会显得那么突兀了。如果您在评论部分看到,我添加了一个“前进”,这样您的动画就会停在最后一个“图像”处。

span{
  position: fixed;
  padding: 20px;
  transition: opacity .4s linear;
}
span.scroll{
  animation: fade 0.7s linear forwards;  // <---- HERE
} 

关于html - 当父 addclass css 动画有效但删除时它们仍然什么都不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437028/

相关文章:

javascript - 如何在使用 JavaScript 选择单选输入时更改 div 的颜色

html - 高度计算无法正常工作

javascript - 通过 JS 触发的 CSS 动画仅每隔一次点击播放一次

html - Div 在变换动画期间被剪裁

html - 使 div 符合聊天布局的 CSS

javascript - 位置 : Fixed is disabling my scroller in IE7

html - 更改选择插入符设计

css - 创建仅适用于 png 或 jpg 格式的 IMG 标签的 CSS 规则

css - CSS 中的发光文本 + 文本轮廓(已使用文本阴影进行发光)

html - 单击时交叉淡入淡出图像库未指向正确的链接