一.概述
1.变形就是通过CSS改变元素的形状或位置
2.变形不会影响页面的布局
3.利用transform属性设置变形
4.变形的原点用transform-origin属性来设置,默认值为center
二.平移
1.transform:translateX();
(1)括号内可填入100px,-100px,1em等表示平移的像素
(2)可填入百分比,按照自身的比例,相对自身计算
2.transform:translateY();
(1)括号内可填入100px,-100px,1em等表示平移的像素
(2)可填入百分比,按照自身的比例,相对自身计算
3.transform:translateZ();
(1)括号内可填入100px,-100px,1em等表示平移的像素
(2)可填入百分比,按照自身的比例,相对自身计算
(3)z轴平移时立体效果(近大远小)默认情况情况下看不出来,需要自己给html根元素设置perspective属性
(4)html{
perspective:800px;/视距/
}
tranform: translateZ(100px);
4.可以一起设置多个平移,中间空格隔开:transform:translateX(100px) translateY(200px);
三.旋转
1.通过旋转可以使元素沿着x,y或z轴旋转指定角度
2.通过transform属性设置,属性值如下:
(1)rotateX()
(2)rotateY()
(3)rotateZ()
- 括号内填入角度
- 单位可以是deg,30deg就是30度
-
3.设置透明度:opacity属性
(1)属性值0-1
(2)0的时候就完全透明,看不见了
(3)1的时候无透明效果3.钟表制作练习
```css <!DOCTYPE html>
/* 表盘样式 */ .clock{ width: 400px; height: 400px; /* background-color: aqua; */ border-radius: 50%; /* border: 2px solid black; */ position:relative; margin: 50px auto; background-image: url(./img/10/表盘.webp); background-size: contain; } .clock div{ position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; } /* 时针 */ .hour-wrapper{ width: 40%; height: 40%; /* background-color: red; */ animation: cl-run 7200s linear infinite; } .hour-wrapper .hour{ height: 50%; width: 6px; background-color: black; margin: 0 auto; } /* 分针 */ .min-wrapper{ width: 55%; height: 55%; /* background-color: red; */ animation: cl-run 600s steps(60) infinite; } .min-wrapper .min{ height: 50%; width: 4px; background-color: black; margin: 0 auto; } /* 秒针 */ .sec-wrapper{ width: 70%; height: 70%; border:10px black solid; border-radius: 50%; animation: cl-run 10s steps(60) infinite; } .sec-wrapper .sec{ height: 50%; width: 2px; background-color: black; margin: 0 auto; } @keyframes cl-run{ form{ transform: rotateZ(0); } to{ transform: rotateZ(360deg); } }
<a name="HJGI4"></a>
#### 4.立方体旋转
```css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html{
perspective: 800px;
}
.cube{
width:200px ;
height: 200px;
margin: 0 auto;
margin-top: 250px;
animation: run 20s infinite linear;
transform-style: preserve-3d;
}
.cube> div{
width: 200px;
height: 200px;
opacity: 0.7;
position:absolute;
}
img{
vertical-align: top;
width: 200px;
height: 200px;
}
.box1{
transform: rotateY(90deg) translateZ(100px);
}
.box2{
transform: rotateY(-90deg) translateZ(100px);
}
.box3{
transform: rotateX(90deg) translateZ(100px);
}
.box4{
transform:rotateX(-90deg) translateZ(100px)
}
.box5{
transform: rotateY(180deg) translateZ(100px);
}
.box6{
transform: rotateY(0deg) translateZ(100px);
}
@keyframes run{
from{
transform: rotateX(0) rotateZ(0);
}
to{
transform: rotateX(1turn) rotateZ(1turn);
}
}
</style>
</head>
<body>
<div class="cube">
<div class="box1">
<img src="./1.jpg" alt="">
</div>
<div class="box2">
<img src="./2.jpg" alt="">
</div>
<div class="box3">
<img src="./3.jpg" alt="">
</div>
<div class="box4">
<img src="./4.jpg" alt="">
</div>
<div class="box5">
<img src="./5.jpg" alt="">
</div>
<div class="box6">
<img src="./6.jpg" alt="">
</div>
</div>
</body>
</html>
四.缩放(放大缩小)
1.通过transform属性设置,属性值如下:
(1)scale():水平垂直双方向缩放
(2)scaleX():水平方向缩放
(3)scaleY():垂直方向缩放