一弄诲、 3D
-
3D
的特點- 近大遠小
- 物體和面遮擋不可見
- 三維坐標(biāo)系
x 軸:水平向右 -- 左負(fù)右正
y 軸:垂直向下 -- 上負(fù)下正
z 軸:垂直屏幕 -- 內(nèi)負(fù)外正
二徽鼎、3D
轉(zhuǎn)換
-
3D
轉(zhuǎn)換-
3D
位移:translate3d(x, y, z)
-
3D
旋轉(zhuǎn):rotate3d(x, y, z)
- 透視:
perspctive
-
3D
呈現(xiàn)transfrom-style
-
3D
移動translate3d
-
3D
移動就是在2D
移動的基礎(chǔ)上多加了一個可以移動的方向,就是 z 軸方向 -
transform: translateX(100px)
:僅僅是在 x 軸上移動 -
transform: translateY(100px)
:僅僅是在 y 軸上移動 -
transform: translateZ(100px)
:僅僅是在 z 軸上移動 -
transform: translate3d(x, y, z)
:其中x披坏、y、z 分別指要移動的軸的方向的距離 - 注意:x, y, z 對應(yīng)的值不能省略,不需要填寫用 0 進行填充
- 語法
transform: translate3d(x, y, z)
- 代碼
transform: translate3d(100px, 100px, 100px)
/* 注意:x, y, z 對應(yīng)的值不能省略展东,不需要填寫用 0 進行填充 */
transform: translate3d(100px, 100px, 0)
三、透視 perspective
-
了解
- 如果想要網(wǎng)頁產(chǎn)生
3D
效果需要透視 - 透視也稱為視距炒俱,理解成眼睛到盒子的距離就好
- 距離視覺點越近的在電腦平面成像越大盐肃,越遠成像越小
(距離視覺點越近卦停,也就是perspective的值越小,元素看起來越大) - 透視的單位是像素
- 如果想要網(wǎng)頁產(chǎn)生
-
要點
- 透視需要寫在被視察元素的父盒子上面
- 注意下方圖片
d:就是視距恼蓬,視距就是指人的眼睛到屏幕的距離
z:就是 z 軸惊完,z 軸越大(正值),我們看到的物體就越大
?
-
代碼
body { perspective: 1000px; }
四处硬、 translateZ
-
translateZ
與perspecitve
的區(qū)別
-
perspecitve
給父級進行設(shè)置小槐,translateZ
給 子元素進行設(shè)置不同的大小
五、3D
旋轉(zhuǎn)rotateX
3D 旋轉(zhuǎn)指可以讓元素在三維平面內(nèi)沿著 x 軸荷辕、y 軸凿跳、z 軸 或者自定義軸進行旋轉(zhuǎn)
-
語法
-
transform: rotateX(45deg)
-- 沿著 x 軸正方向旋轉(zhuǎn) 45 度 -
transform: rotateY(45deg)
-- 沿著 y 軸正方向旋轉(zhuǎn) 45 度 -
transform: rotateZ(45deg)
-- 沿著 z 軸正方向旋轉(zhuǎn) 45 度 -
transform: rotate3d(x, y, z, 45deg)
-- 沿著自定義軸旋轉(zhuǎn) 45 deg 為角度
-
代碼
div {
perspective: 300px;
}
img {
display: block;
margin: 100px auto;
transition: all 1s;
}
img:hover {
transform: rotateX(-45deg)
}
-
左手準(zhǔn)則
左手的手拇指指向 x 軸的正方向(右)
其余手指的彎曲方向就是該元素沿著 x 軸旋轉(zhuǎn)的方向
?
六、3D
旋轉(zhuǎn) rotateY
- 代碼
div {
perspective: 500px;
}
img {
display: block;
margin: 100px auto;
transition: all 1s;
}
img:hover {
transform: rotateY(180deg)
}
-
左手準(zhǔn)則
左手的拇指指向 y 軸的正方向(下)
-
其余的手指彎曲方向就是該元素沿著 y 軸旋轉(zhuǎn)的方向(正值)
?
七疮方、 3D
旋轉(zhuǎn) rotateZ
- 代碼
div {
perspective: 500px;
}
img {
display: block;
margin: 100px auto;
transition: all 1s;
}
img:hover {
transform: rotateZ(180deg)
}
rotate3d
-
transform: rotate3d(x, y, z, deg)
-- 沿著自定義軸旋轉(zhuǎn) deg 為角度 - x, y, z 表示旋轉(zhuǎn)軸的矢量控嗜,是標(biāo)識你是否希望沿著該軸進行旋轉(zhuǎn),最后一個標(biāo)識旋轉(zhuǎn)的角度
-
transform: rotate3d(1, 1, 0, 180deg)
-- 沿著對角線旋轉(zhuǎn) 45deg -
transform: rotate3d(1, 0, 0, 180deg)
-- 沿著 x 軸旋轉(zhuǎn) 45deg
-
-
代碼
div { perspective: 500px; } img { display: block; margin: 100px auto; transition: all 1s; } img:hover { transform: rotate3d(1, 1, 0, 180deg) }
八骡显、
3D
呈現(xiàn)transform-style
transform-style
- 控制子元素是否開啟三維立體環(huán)境
-
transform-style: flat
代表子元素不開啟3D
立體空間疆栏,默認(rèn)的 -
transform-style: preserve-3d
子元素開啟立體空間 - 代碼寫給父級,但是影響的是子盒子
- 代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
body {
perspective: 500px;
}
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
transition: all 2s;
transform-style: preserve-3d;
transform: rotateY(60deg);
}
.box:hover {
transform: rotateY(120deg);
}
.box div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: green;
}
.box div:last-child {
background-color: red;
transform: rotateX(60deg);
}
</style>
</head>
<body>
<div class="box">
<div></div>
<div></div>
</div>
</body>
</html>
瀏覽器前綴
各個瀏覽器對CSS3的支持不同惫谤,所以考慮針對不同瀏覽器寫不同的樣式壁顶。
瀏覽器私有前綴是為了兼容老版本,比較新的瀏覽器無需添加溜歪。
-
-moz-
:代表firefox瀏覽器私有屬性 -
-ms-
:代表ie瀏覽器私有屬性 -
-webkit
:代表safari若专、chrome私有屬性 -
-o-
:代表Opera私有屬性
寫法: -moz-border-radius:50%
-webkit-border-radius:50%
-o-border-radius:50%
border-radius:50%