CSS3 3D转换——rotateX(),rotateY(),rotateZ()

CSS3 允许使用 3D 转换来对元素进行格式化。

㈠浏览器支持

Internet Explorer 10 和 Firefox 支持 3D 转换。

Chrome 和 Safari 需要前缀 -webkit-。

Opera 仍然不支持 3D 转换(它只支持 2D 转换)。

 

㈡rotateX() 方法

通过 rotateX() 方法,元素围绕其 X 轴以给定的度数进行旋转。

 1 代码如下所示:
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <style> 
 6 div
 7 {
 8 width:220px;
 9 height:200px;
10 background-color:yellow;
11 border:1px solid black;
12 }
13 div#div2
14 {
15 transform:rotateX(60deg);
16 -webkit-transform:rotateX(60deg); /* Safari and Chrome */
17 -moz-transform:rotateX(60deg); /* Firefox */
18 }
19 </style>
20 </head>
21 <body>
22 
23 <div>初始状态</div>
24 
25 <div id="div2">围绕x轴旋转120度</div>
26 
27 <p><b>注释:</b> 元素围绕其 X 轴以给定120度数进行旋转</p>
28 
29 </body>
30 </html>

效果如下:

 

㈢rotateY() 旋转

通过 rotateY() 方法,元素围绕其 Y 轴以给定的度数进行旋转。

 1 代码如下所示:
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <style> 
 6 div
 7 {
 8 width:190px;
 9 height:165px;
10 background-color:blue;
11 border:1px solid black;
12 }
13 div#div2
14 {
15 transform:rotateY(130deg);
16 -webkit-transform:rotateY(130deg); /* Safari and Chrome */
17 -moz-transform:rotateY(130deg); /* Firefox */
18 }
19 </style>
20 </head>
21 <body>
22 
23 <div>初始状态</div>
24 
25 <div id="div2">围绕y轴旋转130度</div>
26 
27 <p><b>注释:</b>元素围绕其 y轴以给定130度数进行旋转</p>
28 
29 </body>
30 </html>

效果如下:

 

㈣rotateZ() 旋转

通过 rotateZ() 方法,元素围绕其 Y 轴以给定的度数进行旋转。

 1 代码如下所示:
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <style> 
 6 div
 7 {
 8 width:170px;
 9 height:135px;
10 background-color:red;
11 border:1px solid black;
12 }
13 div#div2
14 {
15 transform:rotateZ(110deg);
16 -webkit-transform:rotateZ(110deg); /* Safari and Chrome */
17 -moz-transform:rotateZ(110deg); /* Firefox */
18 }
19 </style>
20 </head>
21 <body>
22 
23 <div>初始状态</div>
24 
25 <div id="div2">围绕Z轴旋转110度</div>
26 
27 <p><b>注释:</b>元素围绕其 Z轴以给定110度数进行旋转</p>
28 
29 </body>
30 </html>

效果如下:

 

 ㈤转换属性

下面的表格列出了所有的转换属性:

 

⑴transform-origin 属性

★transform-origin 属性允许您改变被转换元素的位置。

2D 转换元素能够改变元素 x 和 y 轴。3D 转换元素还能改变其 Z 轴。

为了更好地理解 transform-origin 属性,请查看这个下面链接的演示:

2D转换链接:https://www.w3school.com.cn/example/css3/demo_css3_transform-origin.html

3D转换链接:https://www.w3school.com.cn/example/css3/demo_css3_transform-origin_3D.html

 

★示例:设置旋转元素的基点位置

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <style>
 5 #div1
 6 {
 7 position: relative;
 8 height: 200px;
 9 width: 200px;
10 margin: 100px;
11 padding:10px;
12 border: 1px solid black;
13 }
14 
15 #div2
16 {
17 padding:50px;
18 position: absolute;
19 border: 1px solid black;
20 background-color: yellow;
21 transform: rotate(45deg);
22 transform-origin:20% 40%;
23 -ms-transform: rotate(45deg); /* IE 9 */
24 -ms-transform-origin:20% 40%; /* IE 9 */
25 -webkit-transform: rotate(45deg); /* Safari and Chrome */
26 -webkit-transform-origin:20% 40%; /* Safari and Chrome */
27 -moz-transform: rotate(45deg); /* Firefox */
28 -moz-transform-origin:20% 40%; /* Firefox */
29 -o-transform: rotate(45deg); /* Opera */
30 -o-transform-origin:20% 40%; /* Opera */
31 }
32 </style>
33 </head>
34 
35 <body>
36 
37 <div id="div1">
38   <div id="div2">HELLO</div>
39 </div>
40 
41 </body>

效果如下:

 

★语法:transform-origin: x-axis y-axis z-axis;

 

 ⑵transform-style 属性

★transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素。

注意:该属性必须与 transform 属性一同使用。

 

★语法:transform-style: flat|preserve-3d;

 

★示例:使被转换的子元素保留其 3D 转换

 1 代码如下所示:
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <style>
 6 #div1
 7 {
 8 position: relative;
 9 height: 200px;
10 width: 200px;
11 margin: 100px;
12 padding:10px;
13 border: 1px solid black;
14 }
15 
16 #div2
17 {
18 padding:50px;
19 position: absolute;
20 border: 1px solid black;
21 background-color: red;
22 transform: rotateY(60deg);
23 transform-style: preserve-3d;
24 -webkit-transform: rotateY(60deg); /* Safari and Chrome */
25 -webkit-transform-style: preserve-3d; /* Safari and Chrome */
26 }
27 
28 #div3
29 {
30 padding:40px;
31 position: absolute;
32 border: 1px solid black;
33 background-color: yellow;
34 transform: rotateY(80deg);
35 -webkit-transform: rotateY(-60deg); /* Safari and Chrome */
36 
37 }
38 </style>
39 </head>
40 
41 <body>
42 
43 <div id="div1">
44   <div id="div2">HELLO
45       <div id="div3">YELLOW</div>
46   </div>
47 </div>
48 
49 </body>
50 </html>

效果如下;

 

⑶perspective 属性

★perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。

当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。

注意:①perspective 属性只影响 3D 转换元素。

           ②与 perspective-origin 属性一同使用该属性,这样就能够改变 3D 元素的底部位置。

 

★语法:perspective: number|none;

透明度拥有近大远小的特点,因此在设置透明度时设置数值相对较小最好。

 

 ★示例:设置元素被查看位置的视图

 1 代码如下图所示:
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5 <style>
 6 #div1
 7 {
 8 position: relative;
 9 height: 150px;
10 width: 150px;
11 margin: 50px;
12 padding:10px;
13 border: 1px solid black;
14 perspective:120;
15 -webkit-perspective:120; /* Safari and Chrome */
16 }
17 
18 #div2
19 {
20 padding:50px;
21 position: absolute;
22 border: 1px solid black;
23 background-color: yellow;
24 transform: rotateX(45deg);
25 -webkit-transform: rotateX(45deg); /* Safari and Chrome */
26 }
27 </style>
28 </head>
29 
30 <body>
31 
32 <div id="div1">
33   <div id="div2">HELLO</div>
34 </div>
35  
36 </body>
37 </html>

效果如下:

 

 ⑷perspective-origin 属性

 ★perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。

    当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身。

 

★语法:perspective-origin: x-axis y-axis;

 

⑸backface-visibility 属性

★backface-visibility 属性定义当元素不面向屏幕时是否可见。

   如果在旋转元素不希望看到其背面时,该属性很有用。

 

★语法:backface-visibility: visible|hidden;

 

 ★示例:隐藏被旋转的 div 元素的背面:

代码如下所示:
<!DOCTYPE html>
<html>
<head>
<style>
div
{
position:relative;
height:120px;
width:120px;
border:1px solid #000;
background-color:yellow;
transform:rotateY(180deg);
-webkit-transform:rotateY(180deg); /* Chrome and Safari */
-moz-transform:rotateY(180deg); /* Firefox */
}
#div1
{
-webkit-backface-visibility:hidden;
-moz-backface-visibility:hidden;
-ms-backface-visibility:hidden;
}
#div2
{
-webkit-backface-visibility:visible;
-moz-backface-visibility:visible;
-ms-backface-visibility:visible;
}
</style>
</head>
<body>

<p>本例有两个 div 元素,均旋转 180 度,背向用户。</p>

<p>第一个 div 元素的 backface-visibility 属性设置为 "hidden",所以应该是不可见的。</p>

<div id="div1">DIV 1</div>

<div id="div2">DIV 2</div>

</body>
</html>

 

效果如下:

 

 ㈥2D Transform 方法

 

参考:w3school

 

         希望有所帮助!

posted @ 2019-08-12 21:41  石海莹  阅读(2345)  评论(1编辑  收藏  举报