【问题标题】:Opacity transition not working with two fixed position elements不透明度过渡不适用于两个固定位置元素
【发布时间】:2018-02-15 10:52:11
【问题描述】:
在我的网站中,我有一个 YouTube 风格的进度条(固定在屏幕顶部的细线,从左到右加载)和所有内容的标题。这两个元素都有position: fixed。
页面加载完成后,进度条会变为opacity: 0。进度条有transition: opacity 0.4s,但它没有过渡,只是出现和消失。这是我的问题。
这是一个问题示例:https://codepen.io/anon/pen/ZJNaqJ
理想情况下,任何解决方案都将涉及更改.loader-outer 或.loader...而不是#loader-wrapper 中的CSS。这是因为我正在拉入一个外部进度条组件(我正在使用 React),如果不需要,我宁愿不重新实现它。
谢谢!
【问题讨论】:
标签:
css
css-position
z-index
transition
opacity
【解决方案1】:
您可以改用 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>