CSS3转换:rotateY一个div来对抗父对象的rotateY

时间:2013-01-31 23:57:36

标签: css3 3d rotation css-transforms

我可以transform: rotateY一个div来反击他父母的transform: rotateY吗? 例如:
如果我的父级div为rotateY(-45deg),他的所有孩子都将为-45deg。
为什么我不能添加rotateY(45deg)让孩子看起来没有轮换影响呢?

演示:http://jsfiddle.net/eBT4A/

2 个答案:

答案 0 :(得分:0)

您可以将rotateY(45deg)添加到父div具有rotateY(-45deg)的子项,以使其看起来只有当您将相同的轴点设置为这两个旋转时才会影响它,

在您的演示示例中,您没有应用相同的支点,

试试这个......

<html>
    <head>
        <style type="text/css">
            body {
                -webkit-perspective: 500;
            }
            #content {
                position:absolute;
                top: 0px;
                left: 0px;
                width: 300px; 
                height: 500px;
                background: #000;
                -webkit-transform-origin: 0px 0px;
                -webkit-transform: rotate(45deg);
                -moz-transform-origin: 0px 0px;
                -moz-transform: rotate(45deg);
            }
            #element {
                position:absolute;
                top: 0px;
                left: 0px;
                width: 50px; 
                height: 50px;
                background: #f00;
                -webkit-transform-origin: 0px 0px;
                -webkit-transform: rotate(-45deg);
                -moz-transform-origin: 0px 0px;
                -moz-transform: rotate(-45deg);
            }
        </style>
    </head>
    <body>
        <div id="content">
            <div id="element"></div>
        </div>
    </body>
</html>

答案 1 :(得分:0)

您需要将preserve-3d添加到父级:

body {
    -webkit-perspective: 500;
}
#content {
    position:fixed;
    top: 20px;
    left: 0;
    width: 300px; 
    height: 500px;
    background: #000;
    -webkit-transform-origin: 0 0;
    -webkit-transform: rotateY(45deg);
    -webkit-transform-style: preserve-3d;
}
#element {
    position:fixed;
    top: 20px;
    left: 50%;
    width: 50px; 
    height: 50px;
    background: #f00;
    -webkit-transform-origin: 0 0;
    -webkit-transform: rotateY(-45deg);
}

updated fiddle

据我所知,这在IE中不起作用。