父元素opacity属性对子元素的影响(子元素设置opacity无效)

问题来源于实践

这段时间做了一个项目优化,对于原有的内容进行了重新设计实现,其中一项就是对于label标签添加hover层进行解释说明,最常用的办法及时label的容器设置relative,然后hover层作为它的子元素设置absolute,然后在使用label的hover伪类来控制hover层的显示和隐藏,这其中一个要求及时hover层必定要求能够遮住页面中其他的元素,所以最常用的办法是设置它的背景颜色,然后让它的z-index处于合理的位置,一切都是这样设计的,但是最终的效果却出现了hover层设置bg为#fff的时候,hover层显示时还是会把底部内容给透出来,第一反应就是opacity设置为1,但是还是没有效果(因为背景为白色,所以有点坑)

最终问题定位在父元素的opacity属性设置为不为1的值导致的,这样即使hover层(作为子元素)设置了bg和opacity为1,也依然会存在一定的透明度。

testcode:

  <style type='text/css'>
            .container{
                width:400px;
                height: 400px;
                border:1px solid red;
                border-radius: 8px;
                position: relative;
                opacity: 0.5;
            }
            .child{
                position: absolute;
                border:1px solid gray;
                border-radius: 6px;
                width:200px;
                height: 200px;
                bottom: -180px;
                opacity: 1;
                font-weight: bold;
                background: #0000ff;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <h2>this is a container with opacity : 0.5</h2>
            <div class="child">
                this is child dom with opacity :1
            </div>
        </div>
        <h3 color='black'>this is a dom covered by child width color : black </h3>
    </body>

demo:

opacity-test

测试结果和问题排查之后的结果一致(设置父元素的opacity为1通过了测试),父元素的opacity会影响到子元素,即使子元素自定义了opacity属性;还发现最后元素遮住了字体之后,背景颜色还能透给底部的文字,相当于底部内容文字形成了一个遮罩的效果,是不是可以用来设计内容呢?

总结:在设置opacity时,需要排查父元素是否已经设置,需要考虑对于元素中所包含的子元素的影响

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页