不透明度转换不适用于两个固定位置元素

时间:2017-09-06 20:28:44

标签: css css-position z-index transition opacity

在我的网站上,我有一个YouTube风格的进度条(固定在屏幕顶部的细线,从左到右加载)以及所有内容的标题。这两个元素都有position: fixed

页面加载完毕后,进度条会显示opacity: 0。进度条有transition: opacity 0.4s,但没有过渡,只是出现和消失。这是我的问题。

以下是此问题的示例:https://codepen.io/anon/pen/ZJNaqJ

理想情况下,任何解决方案都涉及在.loader-outer.loader ...而不是#loader-wrapper内更改CSS。这是因为我引入了一个外部进度条组件(我使用了React),如果我不必这样做,我就不会重新实现它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用css3动画代替。如果要在特定事件处触发动画,请添加样式类名称并在其中设置动画属性。然后删除样式类名称以停止动画。

.wrapper {
  width: 800px;
  height: 400px;
  background-color: lightblue;
}

.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background-color: palevioletred;
  z-index: 1;
  height: 50px;
}

.loader-outer {
}

.loader-wrapper {
}

.loader {
  background-color: lightpink;
  height: 10px;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  animation-name:opacityAnimation;
  animation-iteration-count: infinite;
  animation-duration:2s;
}

@keyframes opacityAnimation {
  0% {opacity:0;}
  50% {opacity:1;}
  100% {opacity:0;}
}

.content {
  background-color: lightgreen;
}
<div class="wrapper">
  <div>
    <div class="header">
      header stuff here
    </div>

    <div class="content">
      body!
    </div>
  </div>

  <div class="loader-outer">
    <div id="loader-wrapper">
      <div class="loader"></div>
    </div>
  </div>
</div>