100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > HTML+CSS实现加载页面的遮罩效果

HTML+CSS实现加载页面的遮罩效果

时间:2018-09-03 16:41:56

相关推荐

HTML+CSS实现加载页面的遮罩效果

HTML+CSS实现加载页面的遮罩效果

在项目中遇到要用html+css写一个加载页面,加载页面分为三层:底层是上一步的用户输入界面,然后覆盖上一个阴影遮罩层,最上层是一个加载提示层位于中间。要求是遮罩层必须要覆盖底层界面的所有控件和文字,但同时又不能覆盖上层的加载提示层的控件和文字。效果如下图

这个要求困扰了我好几天。在网上搜索类似问题,发现大家遇到的问题基本都是“为父div添加遮罩层如何不遮罩子div?”或者是“添加遮罩层如何不影响文字?” 不过从中我获取到的信息是实现遮罩层的两种方法:

使用background-color:rgba(),不影响子div和文字的透明度。使用opacity ,会影响子div和文字的透明度。

另外根据网上大佬的解析,以上方法在不同的浏览器中似乎存在兼容性问题,还有待日后深究。

错误的尝试

我最开始的方法是把遮罩层div放在背景div下,做为子div。遮罩层div下再包含底层控件,以实现对它们的覆盖。然后在css进行设置。以下是简要代码:

HTML:

<div id = "bg">

<!--遮罩层-->

<div id = "zz">

<div>

<!--底层控件-->

</div>

</div>

</div>

<div id = "loading">

<!--加载提示层控件 -->

</div>

CSS:

#bg{

width: 1024px;

height: 768px;

background:url("图片路径") left top no-repeat;

background-size:contain;

position:relative;

}

#zz{

width:100%;

height:100%;

background-color:#000;

opacity:0.5;

position:absolute;

}

#loading{

position:absolute;

}

效果实在是不可描述,底层控件的颜色全部发生了变异……

如上图,背后的输入框就像染上了周边的颜色似的……

但是如果不包含底层的控件和文字,就无法对其进行遮罩了。然后我尝试用z-index属性进行设置,但依旧没有效果。不过我认为问题应该就是出在父亲和孩子div的z-index属性身上,然后再对上述问题进行检索。最后在本网站看到下面这篇文章:父子间的z-index关系

文章作者概括了父子div间z-index属性的关系:“z-index是要考虑父级的,如果子级z-index为0,那么父级就是200000也不会覆盖住子级。如果想要父级覆盖子级,那么父级不需要设置z-index,只要孩子设置就z-index就可以了。”(注:经本人实例测试,孩子z-index值应设为负,且父亲z-index不能设值,否则也不会覆盖,原因暂时未知)虽然没有详细地解析其中的原因,但也给了我一个启发。

最终的实现

根据上述的父div覆盖子div的启发,接下来我尝试把遮罩层div放在底层的外面(真别扭,明明层次应该在中间),代码如下:

HTML:

<!-- 遮罩层 -->

<div id="zz">

<div id="bg">

<!--底层控件-->

</div>

</div>

<div id = "loading">

<!-- 加载层控件 -->

</div>

CSS:

#zz{

width: 100%;

height: 100%;

background-color: #000;

background: rgba(0, 0, 0, 0.7);

position:absolute;

}

#bg{

background: url("图片路径") left top no-repeat;

background-size: contain;

position: absolute;

z-index: -1; /*相对遮罩层*/

}

#loading{

position:absolute;

}

最终效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。