为什么"-webkit-transform-style:preserve-3d;" 让一些div消失?

Gre*_*zzo 7 css webkit google-chrome css3 css-transforms

以下代码应显示标题栏,页脚栏和图像,但由于某种原因,我添加后.div1 { -webkit-transform-style: preserve-3d; }只会获得标题栏.我知道它似乎有一些不必要的div和样式应用,但我确实需要它们的效果,我已经剥离,使调试更容易.我的页面代码是:

<html>
    <head>
        <title></title>
        <style>
            body {
                margin: 0px;
            }
            .div1 {
                -webkit-transform-style: preserve-3d;
            }
            .div2 {
                position: absolute;
                width: 100%;
                height: 100%;
            }
            img {
                max-width: 50%;
                max-height: 50%;
                display: block;
            }            
            .footer {
                position: fixed;
                bottom : 0px;
            }
        </style>
    </head>
    <body>
        <div class="div1">
            <div class="div2">
                <div class="header">
                    Header
                </div>
                <div class="imgdiv">
                    <img src="http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2012/5/18/1337331092888/Cwm-Idwal-Snowdonia.-Mich-007.jpg">
                </div>
                <div class="footer">
                    Footer
                </div>
            </div>
        </div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 11

我认为这里的问题类似于众所周知的行为,其中position: absolute / fixed没有定义高度/宽度的div经常会消失.在你的情况下,3d画布正在寻找在<div class="div1">其上定义宽度,否则它只是在空间中漫无目的地漂浮,因为你赋予它使用3d画布的属性,我相信以某种间接方式导致它不扩展包含子div.

在任何情况下,您都可以看到在元素上定义height并修复了JS小提琴中的问题:http://jsfiddle.net/nY9v6/widthpreserve-3d