CSS3-transform的用法
1、transform实现位移、缩放、旋转、斜切
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>transform</title>
<style type="text/css">
/*用法一:transform实现位移*/
.box{
width: 200px;
height: 200px;
border: 3px solid #000;
background-color: goldenrod;
margin: 50px auto 0;
/*translte位移比定位做的位移性能高,建议使用translate*/
/*使用transform实现位移操作*/
transform: translate(0px,0px);
transition: all 500ms ease;
}
.box:hover{
transform: translate(50px,50px);
}
/*用法二:transform实现缩放*/
.box1{
width: 200px;
height: 200px;
border: 3px solid #000;
background-color: goldenrod;
margin: 200px auto 0;
/*使用transform实现缩放*/
transform: scale(1,1); /*表示水平方向与竖直方向变为原先一倍*/
transition: all 500ms ease;
}
.box1:hover{
transform: scale(2,2);
}
/*用法三:transform实现旋转*/
.box2{
width: 200px;
height: 200px;
border: 3px solid #000;
background-color: goldenrod;
margin: 200px auto 0;
/*使用transform实现旋转*/
transform: rotate(0deg);
transition: all 500ms ease;
}
.box2:hover{
transform: rotate(45deg);/*表示旋转45度*/
}
/*用法四:transform实现斜切*/
.box3{
width: 200px;
height: 200px;
border: 3px solid #000;
background-color: goldenrod;
margin: 200px auto 0;
/*使用transform实现斜切*/
transform: skew(0,0); /*表示沿x轴进行斜切*/
transition: all 500ms ease;
}
.box3:hover{
transform: skew(45deg,0)/*表示斜切*/
}
/*用法五:transform实现斜切*/
.box4{
width: 200px;
height: 200px;
border: 3px solid #000;
background-color: goldenrod;
margin: 200px auto 0;
/*使用transform实现斜切*/
transform: skew(0,0); /*表示沿y轴进行斜切*/
transition: all 500ms ease;
}
.box4:hover{
transform: skew(0,45deg)/*表示斜切*/
}
</style>
</head>
<body>
<div class="box"></div>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>
2、transform设置旋转中心
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
.box1,.box2,.box3,.box4{
width: 200px;
height: 200px;
border: 2px solid black;
background-color: gold;
margin: 30px;
float: left;
transition: all 500ms ease;
}
.box2{
transform-origin: left center ; /*设置旋转中心*/
}
.box3{
transform-origin: left top ; /*设置旋转中心*/
}
.box4{
transform-origin: 50px 50px ; /*设置旋转中心,表示50*50的地方*/
}
.box1:hover,.box2:hover,.box3:hover,.box4:hover{
transform: rotate(45deg);
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>
3、transform实现三维旋转
实现绕Y轴旋转,并设置透视距离
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>transform设置三维旋转</title>
<style type="text/css">
.box{
width: 300px;
height: 300px;
background-color: yellow;
border: 3px solid black;
margin: 50px auto 0;
/*transform: rotate(45deg); !*默认是暗转z轴旋转*!*/
/*做变形动画,需要设置初始值,否则会出现bug*/
transform: perspective(800px) rotate(0deg); /*perspective(800px):为设置透视举例,经验值为800px*/
transition: all 1s ease;
}
.box:hover{
transform: perspective(800px) rotateY(45deg);
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
显示效果如下所示:
实现绕X轴旋转,并设置透视距离
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>50_2_transform设置三维旋转_沿x轴旋转</title>
<style type="text/css">
.box{
width: 300px;
height: 300px;
border: 2px solid black;
background-color: cyan;
margin: 50px auto 0;
/*设置三维动画旋转--绕x轴旋转*/
transform: perspective(800px) rotateX(0deg);
transition: all 1s ease;
}
.box:hover{
transform: perspective(800px) rotateX(45deg);
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
显示效果如下:
3D旋转–实现左右开门效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>50_3_transform设置三维旋转_旋转开门效果</title>
<style type="text/css">
.con{
width:600px ;
height: 300px;
background-color: pink;
margin: 50px auto 0;
}
.box1,.box2{
width: 296px;
height: 296px;
border: 2px solid black;
background-color:gold;
float: left;
}
/*设置原始状态*/
.box1{
transform: perspective(800px) rotateY(0deg);
transition: all 1s ease;
}
/*设置原始状态*/
.box2{
transform: perspective(800px) rotateY(0deg);
transition: all 1s ease;
}
.con:hover .box1{
transform: perspective(800px) rotateY(70deg);
}
.con:hover .box2{
transform: perspective(800px) rotateY(-70deg);
}
</style>
</head>
<body>
<div class="con">
<div class="box1"></div>
<div class="box2"></div>
</div>
</body>
</html>
显示效果如下:
4、transform实现翻页动画效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>实现翻页效果</title>
<style type="text/css">
.box{
width: 300px;
height: 272px;
/*background-color: gold;*/
border: 3px solid black;
margin: 50px auto 0;
position: relative;
transform-style: preserve-3d; /*设置3D旋转效果*/
}
.box img{
position: absolute;
left: 50%;
top: 0;
margin: 0 -150px 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: 270px;
background-color: pink;
position: absolute;
left: 50%;
top: 0;
margin: 0 -150px 0;
font-size: 20px;
text-align: center;
line-height: 272px;
transform: 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>
显示效果如下所示:
5、走路动画效果
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
@keyframes walking {
from{
left: 0;
}
to{
left: -960px;
}
}
.box{
width: 120px;
height: 180px;
border: 1px solid black;
margin: 50px auto;
overflow: hidden;
position: relative;
}
.box img{
position: absolute;
left: 0;
top: 0;
/*设置动画*/
animation: walking 1s steps(8) infinite normal;
}
</style>
</head>
<body>
<div class="box">
<img src="./images/walking.png" alt="">
</div>
</body>
</html>
演示效果如下所示: