3D转换: ①移动:transform:translate3d(x,y,z);
注意:xyz不能省略,不需要需要写0 ②透视——近大远小:perspective:();
注意:透视是写在被观察者的父盒子上 ③旋转:transform:rotateX(x deg); 左手准则:左手拇指指向右方向,其余手指弯曲的方向就是x轴旋转的正方形
transform:rotateY(y deg); 左手准则:左手拇指指向下方向,其余手指弯曲的方向就是y轴旋转的正方形
transform:rotateZ(z deg); 左手准则:左手拇指指向自己,其余手指弯曲的方向就是y轴旋转的正方形
④3D呈现:transfrom-style(默认不开启)——代码写在父盒子上 transfrom-style:preserve-3d
一、效果展示
二、思路
三、实践
正面
反面
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
}
.front,
.back {
position: absolute;
width: 100%;
height: 100%;
border-radius: 50%;
text-align: center;
line-height: 200px;
font-size: 30px;
color: white;
letter-spacing: 5px;
}
.front {
background-color: skyblue;
z-index: 1;
}
.back {
background-color: springgreen;
}
*由于.front与.back的权重一致,就近原则优先显示.back的画面。
想要默认.front在上面,需要为.front设置z-index*
.box {
transition: all .5s;
}
.box:hover {
transform: rotateY(180deg);
}
.back {
background-color: springgreen;
transform: rotateY(180deg);
/* 翻转180°,让.box盒子翻转时正面朝上 */
}
但是要想实现翻转后看到反面,还需要在父类盒子设置3D呈现——transform-style: preserve-3d;
.box {
transform-style: preserve-3d;
/* 让背面的紫色盒子保留点立体空间 */
}
body {
/* perspective写在被观察者的父盒子上,相当于眼睛到被观察物体之间的视距 */
perspective: 500px;
}
一、效果展示
一开始的效果
当鼠标放在上面后向下翻转展示
二、思路
三、实践
1.设置父盒子和两个子盒子
Show me your artic
I want you!
.box {
margin: 0 50px;
position: relative;
width: 260px;
height: 50px;
margin: 0 auto;
}
.on,
.under {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: center;
line-height: 50px;
font-size: 25px;
color: white;
}
.on {
background-color: #857b7b;
z-index: 1;
}
.under {
background-color: yellowgreen;
}
2.移动.under盒子直到在.on下方与.on垂直,为.box设置:hover伪类
.under {
/* 如果有位移和其他多个样式,要优先写位移!!!! */
transform: translateY(25px) rotateX(-90deg);
/* 这里的角度一定是要负数!!! */
}
.box:hover {
transform: rotateX(90deg);
}
设置好后发现.under盒子不见了,还是因为没设置3D呈现transform-style: preserve-3d;,在父盒子.box设置transform-style: preserve-3d;就能看到效果了
.box {
transform-style: preserve-3d;
}
.on {
transform: translateZ(25px);
}