使用z-index将一个div与图像重叠

3

一种CSS动画在图像后面持续播放。当图像未加载时,它将显示,但加载后,图像将覆盖动画。我使用z-index来实现这一点,但它不起作用。

图像应该使用z-index属性隐藏加载动画。

注意:我不能使用任何JavaScript解决方案来隐藏加载动画并在图像加载后显示它。

CSS / HTML / 演示

.leftprev {
    overflow:auto;
    position:absolute;
    height:99%;
    width:85%;
}
.loadingslide {
    z-index: 50; /* Loading div's z-index */    
}
.spinner.big {
    display: block;
    height: 40px;
}
.spinner {
    bottom: 0;
    display: none;
    font-size: 10px;
    height: 30px;
    left: 0;
    margin: auto;
    position: absolute;
    right: 0;
    text-align: center;
    top: 0;
    width: 60px;
}
.spinner.big > div {
    width: 6px;
}
.spinner > div {
    animation: 1.2s ease-in-out 0s normal none infinite stretchdelay;
    background-color: #333;
    display: inline-block;
    height: 100%;
    width: 6px;
}
a {
    color: #470a09;
    text-decoration: none;
}
.slideshow .slidebro .leftprev #slideshowpic {
    display: block;
    margin: 0 auto;
    width: auto;
    z-index: 100; /* image's z-index */    
}
<div class="leftprev">
    <div class="loadingslide"> <!-- Loading Animation div (should be running in background of the image) -->
        <div id="tracking" class="spinner big">
            <div class="rect1"></div>
            <div class="rect2"></div>
            <div class="rect3"></div>
            <div class="rect4"></div>
            <div class="rect5"></div>
        </div>
    </div>
        <a id="targetslide" target="_blank" title="Click to view fit to screen" href="">
          <img src="http://www.placehold.it/500" alt="" id="slideshowpic" />  <!-- The image (should mask the loading animation div) -->
        </a>
</div>    


1
只有当元素具有 absolutefixed 等定位属性时,才会使用 z-index。否则,它将被忽略,元素将根据 DOM 层次结构中的位置进行定位。 - jfriend00
2个回答

5
你需要给想要应用z-index的元素添加position属性。
来自CSS-tricks:
引用: z-index在CSS中控制重叠元素的垂直堆叠顺序。也就是说,哪一个看起来更接近你身体。z-index仅影响具有除静态(默认)以外的position属性值的元素。

http://css-tricks.com/almanac/properties/z/z-index/


4

正确定位加载动画的方法:

  • 将加载 div 放置在容器内部

  • 设置容器为 position: relative,以便加载 div 相对于容器进行定位

当图像加载完毕时隐藏加载动画的方法:

  • 给加载 div 设置 z-index: 1

  • 给图像设置 position: relative,以便它能够具有 z-index 属性

  • 给图像设置 z-index: 2,使其覆盖加载 div

在此示例中,图像的宽度是容器宽度的一半,并且您可以看到它如何覆盖加载 div

CSS / HTML / Demo

html, body {
    height: 100%;
    margin: 0;
}
.content {
    height: 500px;
    width: 500px;
    background: #e91e63;
    margin: 0 auto;
    position: relative;
}
.content img {
    z-index: 2;
    position: relative;
    width: 250px;
    height: 500px;
}
.loading {
    position: absolute;
    margin: auto;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100px;
    height: 1em;
    padding: 20px;
    background: #FF0;
    text-align: center;
    font-weight: bold;
    z-index: 1;
}
<div class="content">
    <div class="loading">I am loading</div>
    <img src="http://www.placehold.it/250X500" />
</div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接