3-5 3D变换的梳理
本节编程练习不计算学习进度,请电脑登录imooc.com操作

3D变换的梳理

在圣诞主题中运用了不少的3D视角的效果,比如开窗、3d旋转,所以需要了解下css中3D变换是如何呈现出来的?

要想实现3D的效果,只需指定一个元素为容器并设置transform-style:preserve-3d,那么它的后代元素便会有3D效果。不过有很多需要注意的地方
坐标系统的 z 轴同时与 x 和 y 轴垂直

1、3D视图

设置一个元素的transform-style:preserve-3d;只影响这个元素的子元素(如果孙元素也有3d效果,那么还必须给子元素设置preserve-3d)。这样所有子元素都可以相对与父元素的平面进行3d变形操作。和二维变形一样,三维变形可以使用transform属性来设置。可以通过制定的函数或者通过三维矩阵来对元素变型

可以呈现3d的属性有,translate3d、scale3d、rotateX、rotateY、rotateZ等等

2、透视/景深效果

perspective(length) 为一个元素设置三维透视的距离。仅作用于元素的后代,而不是其元素本身。简单的来说就是假想下,当我们看一个房子的时候,比如房子有200米长,在房里里面与在房子外面,看到的角度都是不一样的,当设置perspective<200的时候,就是我们在房里看,如果perspective>200或者更多的时候,就相当在外面看,而且越远看房子的角度大小也就不一样

当元素没有设置perspective(length)时,所有后代元素被压缩在同一个二维平面上,不存在景深的效果。如果设置perspective(length)后,将会看到三维的效果。默认的透视视角中心在容器

总结:呈现3d效果需要3部分

  1.  父元素或者当前运动元素上设置透视角perspective,perspective属性的值决定了3D效果的强度
  2. 3D视图,设置在父元素上,子元素都可以相对与父元素的平面进行3d变形操作
  3. 3D变形函数,translate3d、scale3d、rotateX、rotateY、rotateZ等等

知识点挺多,可以查询相关具体的资料。参考右边的代码,便于理解

任务

在右边代码22行区域,给id为#card的元素设置rotateY为70的角度,形成3d的透视效果

  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <head>
  5. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  6. <title>圣诞主题</title>
  7. <style type="text/css">
  8. .container {
  9. width: 200px;
  10. height: 260px;
  11. position: relative;
  12. -webkit-perspective: 700px;
  13. -webkit-transform-style: preserve-3d;
  14. -moz-perspective: 700px;
  15. -moz-transform-style: preserve-3d;
  16. }
  17.  
  18. #card {
  19. width: 100%;
  20. height: 100%;
  21. position: absolute;
  22. /*?*/
  23. background-color: red;
  24. }
  25. </style>
  26. </head>
  27.  
  28. <body>
  29. <section class="container">
  30. <div id="card">
  31. </div>
  32. </section>
  33. </body>
  34.  
  35. </html>
  36.  
下一节