css3 transform变换,变形是静态效果,要做出动画需要transition过渡
css3 transform变换,变形是静态效果,要做出动画需要transition过渡
前4种是变形:
1、translate(x,y) 设置盒子位移
2、scale(x,y) 设置盒子缩放
3、rotate(deg) 设置盒子旋转
4、skew(x-angle,y-angle) 设置盒子斜切
5、perspective 设置透视距离
6、transform-style flat | preserve-3d 设置盒子是否按3d空间显示
7、translateX、translateY、translateZ设置三维移动
8、rotateX、rotateY、rotateZ设置三维旋转
9、scaleX、scaleY、scaleZ设置三维缩放
10、transform-origin 设置变形的中心点
11、backface-visbility 设置盒子背面是否可见
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>变形动画</title> <style> .box{ width:200px; height:200px; background-color: gold; border:1px solid #000; margin:50px auto; transition: all 1s ease; } .box:hover{ /*平移,定位也可以做到同样效果,但是transform性能更高*/ transform: translate(50px,50px); } .box2{ width:200px; height:200px; background-color: gold; border:1px solid #000; margin:50px auto; transition: all 1s ease; } .box2:hover{ /*缩放一倍:*/ transform: scale(2,2); } .box3{ width:200px; height:200px; background-color: gold; border:1px solid #000; margin:50px auto; transition: all 1s ease; } .box3:hover{ /*旋转45度:*/ transform: rotate(45deg); } .box4{ width:200px; height:200px; background-color: gold; border:1px solid #000; margin:50px auto; transition: all 1s ease; } .box4:hover{ /*斜切:*/ transform:skew(0,45deg) ; } </style> </head> <body> <div class="box"></div> <div class="box2"></div> <div class="box3"></div> <div class="box4"></div> </body> </html>
tranform-origin 设置变形的中心点:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .box01,.box02,.box03,.box04{ width:200px; height:200px; border:3px solid #000; background-color: gold; margin:30px; float:left; transition:all 500ms ease; } .box01:hover,.box02:hover,.box03:hover,.box04:hover{ transform:rotate(45deg); } .box02{ /*改变box02旋转的中心为left center;默认中心是:center,center;*/ transform-origin: left center; } .box03{ transform-origin: left top; } .box04{ transform-origin:200px 200px; } </style> </head> <body> <div class="box01"></div> <div class="box02"></div> <div class="box03"></div> <div class="box04"></div> </body> </html>
三维旋转
rotate(deg)默认是按z轴旋转,可以改变轴,并加上透视值
旋转的轴向:
x:从左往右
y:从上往下
z:顺时针(从屏幕内往外)
规律:让轴对着自己,顺时针方向转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width:300px; height:300px; background-color:gold; border:3px solid #000; margin:50px auto 0; /*一般三维旋转加上这句,按三维空间旋转,默认是平面flat*/ transform-style: preserve-3d; /*这里设置一个初始值,做变形的时候最好设置一个初始值,不然可能会出现bug*/ transform:perspective(800px) rotateY(0deg); transition: all 1s ease; } .box:hover{ /*按y轴旋转rotateY,加上透视值(800px是一个经验值)*/ transform:perspective(800px) rotateY(45deg); } </style> </head> <body> <div class="box"></div> </body> </html>
三维旋转例子 翻牌效果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.box{
width:200px;
height:300px;
border:3px solid #000;
margin:50px auto;
position: relative;
}
.box .img{
width:200px;
height:300px;
background-color: gold;
position: absolute;
left:0px;
top:0;
font-size:20px;
text-align: center;
line-height: 300px;
/*三维旋转规范写法要加上这句*/
transform-style: preserve-3d;
transform:perspective(800px) rotateY(0deg);
transition:all 1s ease;
/*设置反转背面是否可见:hidden,visible,如果是hidden则反正后背面完全透明不可见*/
backface-visibility:hidden;
}
.box:hover .img{
transform:perspective(800px) rotateY(180deg);
}
.back{
width:200px;
height:300px;
background-color: gold;
position: absolute;
left:0px;
top:0;
font-size:20px;
text-align: center;
line-height: 300px;
transform:perspective(800px) rotateY(-180deg);
transition:all 1s ease;
/*背面不可见,初始值就是背面,一开始就不可见*/
backface-visibility: hidden;
}
.box:hover .back{
transform:perspective(800px) rotateY(0deg);
}
</style>
</head>
<body>
<div class="box">
<div class="img">pic</div>
<div class="back">图片的说明文字</div>
</div>
</body>
</html>

浙公网安备 33010602011771号