更新時(shí)間:2021-11-02 來源:黑馬程序員 瀏覽量:
在三維空間里,除了rotateX()、rotateY()和rotateZ()函數(shù)可以讓元素在三維空間中旋轉(zhuǎn)之外,還有一個(gè)rotate3d()函數(shù)。在3D空間,三個(gè)維度也就是三個(gè)坐標(biāo),即長、寬、高。軸的旋轉(zhuǎn)是圍繞一個(gè)[x,y,z]向量并經(jīng)過元素原點(diǎn)。其基本語法如下。
rotate3d(x, y, z, angle);
在上述語法格式中,各參數(shù)屬性值的取值說明如下。
● x:代表橫向坐標(biāo)位移向量的長度。
● y:代表縱向坐標(biāo)位移向量的長度。
● z:代表Z 軸位移向量的長度。此值不能是一個(gè)百分比值,否則將會(huì)視為無效值。
● angle:角度值,主要用來指定元素在3D空間旋轉(zhuǎn)的角度,如果其值為正,元素順時(shí)針旋轉(zhuǎn),反之元素逆時(shí)針旋轉(zhuǎn)。
需要說明的是,在CSS3中包含很多轉(zhuǎn)換的屬性,通過這些屬性可以設(shè)置不同的轉(zhuǎn)換效果,具體屬性如下:
| 屬性名稱 | 描述 |
| transform | 向元素應(yīng)用2D 或3D 轉(zhuǎn)換 |
| transform-origin | 允許改變被轉(zhuǎn)換元素的位置 |
| transform-style | 規(guī)定被嵌套元素如何在3D空間中顯示 |
| perspective | 規(guī)定3D元素的透視效果 |
| perspective-origin | 規(guī)定3D元素的底部位置 |
| backface-visibility | 定義元素在不面對屏幕時(shí)是否可 |
另外,CSS3中還包含很多轉(zhuǎn)換的方法,運(yùn)用這些方法可以實(shí)現(xiàn)不同的轉(zhuǎn)換效果,具體方法如下所示。
| 方法名稱 | 描述 |
| matrix3d(n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n) | 定義3D轉(zhuǎn)換,使用16個(gè)值的4×4矩陳 |
| translate3d(x, y, z) | 定義3D轉(zhuǎn)換 |
| translateX(x) | 定義3D轉(zhuǎn)換,使用用于X軸的值 |
| translateY(y) | 定義3D轉(zhuǎn)換,使用用于y軸的值 |
| translateZ(z) | 定義3D轉(zhuǎn)換,使用用于Z軸的值 |
| scale3d(x, y, z) | 定義3D縮放轉(zhuǎn)換 |
| scaleX(x) | 定義3D縮放轉(zhuǎn)換,通過給定一個(gè)X軸的值 |
| scaleY(y) | 定義3D縮放轉(zhuǎn)換,通過給定一個(gè)Y軸的值 |
| scaleZ(z) | 定義3D縮放轉(zhuǎn)換,通過給定一個(gè)Z軸的值 |
| rotate3d(x,y,z,angle) | 定義3D旋轉(zhuǎn) |
| rotateX(angle) | 定義沿X軸的3D旋轉(zhuǎn) |
| rotateY(angle) | 定義沿Y軸的3D旋轉(zhuǎn) |
| rotateZ(angle) | 定義沿Z軸的3D旋轉(zhuǎn) |
| perspective(n) | 定義3D轉(zhuǎn)換元素的透視試圖 |
下面,通過一個(gè)案例演示轉(zhuǎn)換的屬性和方法的使用,如下例所示。
<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>translate3D()方法</title>
<style>
div{
width: 200px;
height: 200px;
margin: 50px auto;
border: 5px solid #000;
position: relative;
perspective: 50000px; /*規(guī)定 3D元素的透視效果*/
-ms-perspective: 50000px; /* IE9瀏覽器兼容代碼 */
-webkit-perspective: 50000px; /* Safari andChrome瀏覽器兼容代碼 */
-moz-perspective: 50000px; /*Firefox瀏覽器兼容代碼*/
-o-perspective: 50000px; /*Opera瀏覽器兼容代碼*/
transform-style: preserve-3d; /*規(guī)定被嵌套元素如何在 3D空間中顯示*/
-ms-transform-style: preserve-3d; /* IE9瀏覽器兼容代碼 */
-webkit-transform-style: preserve-3d; /*Safari andChrome瀏覽器兼容代碼 */
-moz-transform-style: preserve-3d; /*Firefox瀏覽器兼容代碼*/
-o-transform-style: preserve-3d; /*Opera瀏覽器兼容代碼*/
transition: all 1s ease 0s; /*設(shè)置過渡效果*/
-webkit-transition: all 1s ease 0s; /*Safari andChrome瀏覽器兼容代碼*/
-moz-transition: all 1s ease 0s; /*Firefox瀏覽器兼容代碼*/
-o-transition: all 1s ease 0s; /*Opera瀏覽器兼容代碼*/
}
div:hover{
transform: rotateX(-90deg); /* 設(shè)置旋轉(zhuǎn)角度*/
-ms-transform: rotateX(-90deg); /* IE9瀏覽器兼容代碼 */
-webkit-transform: rotateX(-90deg); /*Safari andChrome瀏覽器兼容代碼 */
-moz-transform: rotateX(-90deg); /*Firefox瀏覽器兼容代碼*/
-o-transform: rotateX(-90deg); /*Opera瀏覽器兼容代碼*/
}
div img{
position: absolute;
top: 0;
left: 0;
}
div img.no1{
transform: translateZ(100px); /* 設(shè)置旋轉(zhuǎn)軸*/
-ms-transform: rotateZ(100px); /* IE9瀏覽器兼容代碼 */
-webkit-transform: rotateZ(100px); /*Safari andChrome瀏覽器兼容代碼 */
-moz-transform: rotateZ(100px); /*Firefox瀏覽器兼容代碼*/
-o-transform: rotateZ(100px); /*Opera瀏覽器兼容代碼*/
z-index: 2;
}
div img.no2{
transform: rotateX(90deg) translateZ(100px); /* 設(shè)置旋轉(zhuǎn)軸和旋轉(zhuǎn)角度*/
-ms-transform: rotateX(90deg) translateZ(100px); /* IE9瀏覽器兼容代碼 */
-webkit-transform: rotateX(90deg) translateZ(100px); /*SafariandChrome瀏覽器兼容代碼 */
-moz-transform: rotateX(90deg) translateZ(100px); /*Firefox瀏覽器兼容代碼*/
-o-transform: rotateX(90deg) translateZ(100px); /*Opera瀏覽器兼容代碼*/
}
</style>
</head>
<body>
<div>
<img class="no1" src="../images/1.png" alt="1">
<img class="no2" src="../images/2.png" alt="2">
</div>
</body>
</html>
在上面案例中,通過perspective屬性規(guī)定3D元素的透視效果,transform-style屬性規(guī)定元素在3D空間中的顯示方式,并且分別針對
和設(shè)置不同的旋轉(zhuǎn)軸和旋轉(zhuǎn)角度。
運(yùn)行例代碼,默認(rèn)效果如下圖所示。
鼠標(biāo)移上時(shí),<div>將沿著X軸逆時(shí)針旋轉(zhuǎn)90°,旋轉(zhuǎn)后的效果如下圖所示。