CSS3 transform变换
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、tranform-origin 设置变形的中心点
11、backface-visibility 设置盒子背面是否可见
做变形动画需要设置初始值,不设置容易出现跳变的bug
案例1:设置盒子位移、缩放、旋转、斜切
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>transform</title>
<style type="text/css">
.box{
width:200px;
height:200px;
border:3px solid #000;
background-color:gold;
margin:50px auto 0;
/* translate位移比定位做的位移性能高,建议使用这种位移 */
transform:translate(0px,0px);
transition:all 500ms ease;
}
.box:hover{
transform:translate(30px,30px);
}
.box2{
width:200px;
height:200px;
border:3px solid #000;
background-color:gold;
margin:50px auto 0;
transform:scale(1,1);
transition:all 500ms ease;
}
.box2:hover{
transform:scale(2,2);
}
.box3{
width:200px;
height:200px;
border:3px solid #000;
background-color:gold;
margin:50px auto 0;
transform:rotate(0deg);
transition:all 500ms ease;
}
.box3:hover{
transform:rotate(45deg);
}
.box4{
width:200px;
height:200px;
border:3px solid #000;
background-color:gold;
margin:50px auto 0;
transform:skew(0,0);
transition:all 500ms 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>
案例2:tranform-origin 设置变形的中心点
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.box01,.box02,.box03,.box04{
width:200px;
height:200px;
border:3px solid #000;
background:gold;
margin:30px;
float:left;
transition:all 500ms ease;
}
.box02{
transform-origin:left center;
}
.box03{
transform-origin:left top;
}
.box04{
transform-origin:50px 50px;
}
.box01:hover,.box02:hover,.box03:hover,.box04:hover{
transform:rotate(90deg);
}
</style>
</head>
<body>
<div class="box01"></div>
<div class="box02"></div>
<div class="box03"></div>
<div class="box04"></div>
</body>
</html>
案例3:图片翻转动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.box{
width:700px;
height:272px;
border:3px solid #000;
margin:50px auto 0;
position:relative;
/* 让容器里面的元素按照3d空间显示(规范写法) */
transform-style:preserve-3d;
}
.box img{
position:absolute;
left:200px;
top:0;
transform:perspective(800px) rotateY(0deg);
transition:all 500ms ease;
backface-visibility:hidden;
}
.box:hover img{
transform:perspective(800px) rotateY(180deg);
}
.box .back{
width:300px;
height:272px;
background-color:pink;
position:absolute;
left:200px;
top:0;
font-size:20px;
text-align:center;
line-height:272px;
transform:perspective(800px) rotateY(-180deg);
transition:all 500ms ease;
backface-visibility:hidden;
}
.box:hover .back{
transform:perspective(800px) rotateY(0deg);
}
</style>
</head>
<body>
<div class="box">
<img src="images/location_bg.jpg" alt="背景图">
<div class="back">
图片的说明文字
</div>
</div>
</body>
</html>
案例4:三维旋转
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>三维旋转</title>
<style type="text/css">
/*
旋转的轴向:
x轴:从左往右
y轴:从上往下
z轴:从屏幕内往外
判断旋转的方向:让轴向对着自己,顺时针方向
*/
.box{
width:300px;
height:300px;
background-color:gold;
border:3px solid #000;
margin:50px auto 0;
transform-style:preserve-3d;
/* 做变形动画需要设置初始值,不设置容易出现跳变的bug */
transform:perspective(800px) rotateY(0deg);
transition:all 500ms ease;
}
.box:hover{
transform:perspective(800px) rotateY(45deg);
}
.box2{
width:300px;
height:300px;
background-color:gold;
border:3px solid #000;
margin:50px auto 0;
transform-style:preserve-3d;
/* 做变形动画需要设置初始值,不设置容易出现跳变的bug */
transform:perspective(800px) rotateX(0deg);
transition:all 500ms ease;
}
.box2:hover{
transform:perspective(800px) rotateX(45deg);
}
</style>
</head>
<body>
<div class="box"></div>
<div class="box2"></div>
</body>
</html>