CSS Opacity属性对层叠上下文的影响

CSS Opacity属性对层叠上下文的影响今天在遇到一个opacity过渡的时候,遇到了一个奇怪的问题:父元素设置了opacity。子元素设置了z-index:-1

大家好,又见面了,我是你们的朋友全栈君。

今天在遇到一个opacity过渡的时候,遇到了一个奇怪的问题:
父元素设置了opacity。
子元素设置了z-index:-1

        <div class="box" style="opacity:.7">
            <img style="position:relative;z-index:-1" src="http://www.gbtags.com/gb/laitu/200" />
        </div>

CSS Opacity属性对层叠上下文的影响
按我之前的理解,图片应该是躲在.box元素后面的,结果,img却安安静静的躺在.box上面…
WTF?
CSS Opacity属性对层叠上下文的影响

去网上查询了下资料,原来是CSS层叠上下文搞的鬼。。。
当元素的opacity属性不为1的时候,将会创造一个层叠上下文,则无论子元素的z-index为负多少,都将不能穿透父元素。
做个测试

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css"> .box { opacity: .8; padding: 20px; background: blueviolet; } .box:hover { opacity: 1; } .box img { position: relative; z-index: -1; } </style>
    </head>

    <body>
        <p>opacity在不为1的时候会创建层叠上下文</p>
        <div class="box">
            <img src="http://www.gbtags.com/gb/laitu/200" />
        </div>
    </body>

</html>

CSS Opacity属性对层叠上下文的影响

鼠标移入时,opacity为1,.box不具有层叠上下文,img穿透.box


除开opacity属性,还有很多CSS属性也会为元素创建层叠上下文

摘自张鑫旭大神的博客
CSS Opacity属性对层叠上下文的影响

PS:有时候在开发WebAPP页面的时候,会出现一些诡异的布局错乱,有时候可以无脑的设置 transform: translateZ(0);position:relative,可以解决不少问题。

参考链接

深入理解CSS中的层叠上下文和层叠顺序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141490.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号