人生有如一股奔流,没有暗礁,激不起美丽的浪花。
2D转化 (平面效果)
rotate:旋转
transform:rotate(30deg)
绕着中心点旋转30度 正数代表顺时针旋转 负数代表逆时针旋转
scale:缩放
transform:scale(x, y)
x代表width的倍数 y代表height的倍数
<div class="box"></div>
<style>
.box {
width: 100px;
height: 100px;
margin: 50px auto;
border: 1px solid #ff3040;
/* 2代表width的倍数 此时width变成了200px 1代表height的倍数 此时height变成了400px */
transform: scale(2, 4);
box-sizing: border-box;
}
</style>
translate:位移
transform:translate(x, y)
x代表水平方向的值 y代表垂直方向的值- 如果只设置一个值 代表水平方向的值
- 可以设置负数 代表的是相反方向的值
- 可以设置百分比、百分比相对于当前元素自己的高度和宽度
位移与定位的区别
- 定位:
- 会影响其它元素位置 (脱离标准流)
- 行内元素定位会直接变成块级元素
- 位移:
- 不影响其它元素位置 (不脱离标准流、占原来位置)
- 在行内元素无效;对块级元素生效
复合写法:transform:rotate(30deg) translate(x,y) scale(x,y)
3D转化 (立体效果)
rotate:旋转
- transform:rotateX(30deg)` 单杠效果
transform:rotateY(30deg)
开门效果transform:rotateZ(30deg)
与2D转化中的旋转效果一样
scale:缩放
transform:scaleX(值)
transform:scaleY(值)
translate:位移
transform:translateX(值)
transform:translateY(值)
transform:translateZ(值)
将平面图行转化为立体图形属性:transform-style: preserve-3d
动画 (animation)
animation:定义的动画名 动画执行时间
@keyframes 定义的动画名 {
/* 设置动画开始时候的样式 */
from {}
/* 设置动画结束时候的样式 */
to{}
}
/* 动画百分比方式 */
@keyframes 定义的动画名 {
/* 百分比表示的是相对当前动画整个执行时间的 */
0% {
transform:rotate(0deg)
}
}
animation-name
:动画名称
animation-duration
:动画执行时间
animation-iteration-count
:动画执行次数 (默认是1次、无限次执行:infinite)
animation-direction
:动画逆播 (alternate)
animation-timing-function
:动画速度 (默认值:ease 【ease-in:加速效果 ease-out:减速效果 ease-in-out:先加速再减速】 linear:匀速)
animation-fill-mode
:让动画在结束位置停下 (forwards 【动画执行的次数不能是无限次执行】)
animation-play-state
:动画是否暂停 (默认值:running paused:暂停)
animation与transition的区别
- animation:
- 动画实现自动播放、动画次数可以是无限次执行
- transition
- 动画需要用户动作、动画随着用户动作的取消而停止执行
<!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>
* {
margin: 0;
padding: 0;
}
body {
background-color: #000;
}
.box1 {
position: relative;
width: 100%;
margin: 0 auto;
}
.box2 {
position: relative;
width: 200px;
height: 300px;
margin: 200px auto;
transform-style: preserve-3d;
animation: move 10s linear infinite;
}
.box2:hover {
animation-play-state: paused;
}
.box2 div {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 300px;
}
img {
width: 300px;
height: 400px;
}
.img1 {
transform: rotateY(0deg) translateZ(485px);
}
.img2 {
transform: rotateY(40deg) translateZ(485px);
}
.img3 {
transform: rotateY(80deg) translateZ(485px);
}
.img4 {
transform: rotateY(120deg) translateZ(485px);
}
.img5 {
transform: rotateY(160deg) translateZ(485px);
}
.img6 {
transform: rotateY(200deg) translateZ(485px);
}
.img7 {
transform: rotateY(240deg) translateZ(485px);
}
.img8 {
transform: rotateY(280deg) translateZ(485px);
}
.img9 {
transform: rotateY(320deg) translateZ(485px);
}
@keyframes move {
0% {
transform: rotateX(-15deg) rotateY(0deg);
}
100% {
transform: rotateX(-15deg) rotateY(360deg);
}
}
</style>
</head>
<body>
<div class="box1">
<div class="box2">
<div class="img1">
<img src="img/1.jpg" alt="">
</div>
<div class="img2">
<img src="img/2.jpg" alt="">
</div>
<div class="img3">
<img src="img/3.jpg" alt="">
</div>
<div class="img4">
<img src="img/4.jpg" alt="">
</div>
<div class="img5">
<img src="img/5.jpg" alt="">
</div>
<div class="img6">
<img src="img/1.jpg" alt="">
</div>
<div class="img7">
<img src="img/2.jpg" alt="">
</div>
<div class="img8">
<img src="img/3.jpg" alt="">
</div>
<div class="img9">
<img src="img/4.jpg" alt="">
</div>
</div>
</div>
</body>
</html>