CSS3 transform-style 属性

让转换的子元素保留3D转换:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <style>
    #div1 {
      position: relative;
      height: 200px;
      width: 200px;
      margin: 100px;
      padding: 10px;
      border: 1px solid black;
    }

    #div2 {
      padding: 50px;
      position: absolute;
      border: 1px solid black;
      background-color: red;
      transform: rotateY(60deg);
      transform-style: preserve-3d;
      -webkit-transform: rotateY(60deg);
      /* Safari and Chrome */
      -webkit-transform-style: preserve-3d;
      /* Safari and Chrome */
    }

    #div3 {
      padding: 40px;
      position: absolute;
      border: 1px solid black;
      background-color: yellow;
      transform: rotateY(-60deg);
      -webkit-transform: rotateY(-60deg);
      /* Safari and Chrome */
    }
  </style>
</head>

<body>

  <div id="div1">
    <div id="div2">HELLO
      <div id="div3">YELLOW</div>
    </div>
  </div>

</body>
</html>

尝试一下 »


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。

属性
transform-style 36.0
12.0 -webkit-
11.0 16.0
10.0 -moz-
9.0
4.0 -webkit-
23.0
15.0 -webkit-

属性定义及使用说明

transform--style属性指定嵌套元素是怎样在三维空间中呈现。

注意: 使用此属性必须先使用 transform 属性.

Safari/Chrome用户:为了更好地理解transform--style属性,请查看实例 - 演示.

<html>
<!DOCTYPE html>
<html>
<head>
  <style>
    #div1 {
      position: relative;
      height: 200px;
      width: 200px;
      margin: 50px;
      padding: 10px;
      border: 1px solid black;
    }

    #div2 {
      padding: 50px;
      position: absolute;
      border: 1px solid black;
      background-color: red;
      transform: rotateY(45deg);
      transform-origin: 50% 50% 100px;
      -webkit-transform: rotateY(70deg);
      /* Safari and Chrome */
      -webkit-transform-origin: 50% 50% 100px;
      /* Safari and Chrome */
      -moz-transform: rotateY(70deg);
      /* Firefox */
      -moz-transform-origin: 50% 50% 100px;
      /* Firefox */
      -o-transform: rotateY(70deg);
      /* Opera */
      -o-transform-origin: 50% 50% 100px;
      /* Opera */
    }

    #div3 {
      padding: 40px;
      position: absolute;
      border: 1px solid black;
      background-color: yellow;
      transform: rotateY(80deg);
      transform-origin: 40% 90% 10px;
      -webkit-transform: rotateY(80deg);
      /* Safari and Chrome */
      -webkit-transform-origin: 40% 90% 10px;
      /* Safari and Chrome */
      -moz-transform: rotateY(80deg);
      /* Firefox */
      -moz-transform-origin: 40% 90% 10px;
      /* Firefox */
      -o-transform: rotateY(80deg);
      /* Opera */
      -o-transform-origin: 40% 90% 10px;
      /* Opera */
    }
  </style>
  <script>
    function changeRot(value) {
      document.getElementById('div2').style.transform = "rotateY(" + value + "deg)";
      document.getElementById('div2').style.webkitTransform = "rotateY(" + value + "deg)";
      document.getElementById('div2').style.MozTransform = "rotateY(" + value + "deg)";
      document.getElementById('div2').style.OTransform = "rotateY(" + value + "deg)";
      document.getElementById('persp').innerHTML = value + "deg";
    }

    function checkFlat() {
      if (document.getElementById("tf").checked == true) {
        document.getElementById('div2').style.webkitTransformStyle = "preserve-3d";
      } else {
        document.getElementById('div2').style.webkitTransformStyle = "flat";
      }
    }
  </script>
</head>

<body>

  <p>Rotate the div elements, with and without checking the transform-style checkbox:</p>

  <div id="div1">
    <div id="div2">HELLO
      <div id="div3">YELLOW</div>
    </div>
  </div>

  webkit-transform-style: preserve-3d<input type="checkbox" onchange="checkFlat()" id="tf" /><br>
  <br> Rotate:
  <br>
  <input type="range" min="-360" max="360" value="70" onchange="changeRot(this.value)" /><br> -webkit-transform: rotateY:(<span id="persp">70deg</span>);

</body>
</html>

尝试一下 »

默认值: flat
继承: no
版本: CSS3
JavaScript 语法: object.style.transformStyle="preserve-3d"

语法

transform-style: flat|preserve-3d;

描述
flat 表示所有子元素在2D平面呈现。
preserve-3d 表示所有子元素在3D空间中呈现。