前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第101天:CSS3中transform-style和perspective

第101天:CSS3中transform-style和perspective

作者头像
半指温柔乐
发布2018-09-11 11:41:54
7760
发布2018-09-11 11:41:54
举报
文章被收录于专栏:前端知识分享前端知识分享

一、transform-style

1、transform-style属性是3D空间一个重要属性,指定嵌套元素如何在3D空间中呈现

有两个属性值:flatpreserve-3d

transform-style属性的使用语法非常简单: transform-style: flat | preserve-3d

其中flat值为默认值,表示所有子元素在2D平面呈现。

2、preserve-3d表示所有子元素在3D空间中呈现。

  如果对一个元素设置了transform-style的值为flat,则该元素的所有子元素都将被平展到该元素的2D平面中进行呈现。沿着X轴或Y轴方向旋转该元素将导致位于正或负Z轴位置的子元素显示在该元素的平面上,而不是它的前面或者后面。如果对一个元素设置了transform-style的值为preserve-3d,它表示不执行平展操作,他的所有子元素位于3D空间中。

二、perspective属性

perspective属性对于3D变形来说至关重要。该属性会设置查看者的位置,并将可视内容映射到一个视锥上,继而投到一个2D视平面上。如果不指定透视,则Z轴空间中的所有点将平铺到同一个2D视平面中,并且变换结果中将不存在景深概念。

其实对于perspective属性,我们可以简单的理解为视距,用来设置用户元素3D空间Z平面之间的距离。而其效应由他的值来决定,值越小,用户与3D空间Z平面距离越近,视觉效果更令人印象深刻;反之,值越大,用户与3D空间Z平面距离越远,视觉效果就很小。 在3D变形中,对于某些变形,例如下面的示例演示的沿Z轴的变形,perspective属性对于查看变形的效果来说必不可少。

代码语言:javascript
复制
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>3d</title>
 6     <style>
 7         .out{
 8             width: 500px;
 9             height: 500px;
10             border: 1px solid #000;
11             background-color: pink;
12             margin:100px auto;
13             transform: rotateY(60deg);
14             /*可以让里面的盒子保持3d效果,加给父盒子*/
15             transform-style: preserve-3d;
16         }
17         .in{
18             width: 300px;
19             height: 400px;
20             margin: 50px auto;
21             background-color: green;
22             transform: rotateX(130deg);
23         }
24     </style>
25 </head>
26 <body>
27     <div class="out">
28         <div class="in"></div>
29     </div>
30 </body>
31 </html>

运行效果:


三、backface-visibility属性

backface-visibility属性决定元素旋转背面是否可见。对于未旋转的元素,该元素的正面面向观看者。当其Y轴旋转约180度时会导致元素的背面面对观众。

backface-visibility属性使用语法很简单:

backface-visibility: visible | hidden

该属性被设置为以下两个关键词之一:

  • visible:为backface-visibility的默认值,表示反面可见
  • hidden:表示反面不可见

案例:

代码语言:javascript
复制
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             background-color: deepskyblue;
 9         }
10         .box{
11             width: 300px;
12             height: 300px;
13             border:1px solid #000;
14             margin:100px auto;
15             position: relative;
16         }
17         .box::after,.box::before{
18             content:"";
19             position: absolute;
20             width: 100%;
21             height: 100%;
22             border-radius: 50%;
23             background-color: pink;
24             background: url("images/bg.png") no-repeat left top;
25             transition: 1s;
26             /*让盒子背面隐藏*/
27             backface-visibility: hidden;
28         }
29         .box::before{
30             transform: rotateY(-180deg);
31         }
32         .box::after{
33             background-position: right top;
34         }
35         .box:hover::before{
36             transform: rotateY(0deg);
37         }
38         .box:hover::after{
39             transform: rotateY(180deg);
40         }
41     </style>
42 </head>
43 <body>
44     <div class="box"></div>
45 </body>
46 </html>

运行效果:
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、transform-style
  • 二、perspective属性
  • 三、backface-visibility属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档