使用transform进行图形变换
概述
transform可以实现以下几种变换:
- 位移(translate)
- 缩放(scale)
- 旋转(rotate)
- 倾斜(skew)
位移(translate)
.element {
/* 分开写 */
transform: translateX(20px);
transform: translateY(10px);
/* 合起来写 */
transform: translate(20px, 10px);
}
缩放(scale)
.element {
/* 分开写 */
transform: scaleX(2);
transform: scaleY(.5);
/* 合起来写 */
transform: scale(2, .5);
}
旋转(rotate)
.element {
transform: rotate(25deg);
}
.rotateXItem{
transform: rotateX(50deg);
}
.rotateYItem{
transform: rotateY(70deg);
}
.rotateZItem{
transform: rotateZ(100deg);
}
- 效果图:
一般用于360度旋转制作loading
倾斜(skew)
.element {
transform: skewX(20deg);
}
inline 元素不支持 transform,需要先变成 block
使用transition进行动画过渡
作用
- 补充中间帧
语法
.example {
/* 属性过渡 */
transition: [属性名] [时长] [过渡方式] [延迟];
/* 同时进行两个属性过渡 */
transition: [属性名1] [时长1] [过渡方式1] [延迟1], [属性名2] [时长2] [过渡方式2] [延迟2];
}
过渡方式
- linear
- ease / ease-in / ease-out / ease-in-out
- cubic-bezier
- step-start / step-end / steps
并不是所有属性都能过渡
- display: none —> display: block 不能过渡
- visibility: hidden —> visibility: visible 可以过渡
- background(?)
- opacity(?)
使用animation进行动画过渡
语法
/* keyframes语法1:使用from和to */
@keyframes animation-name-1{
from {
transform: translateX(0%);
}
to {
transform: translateY(100%);
}
}
/* keyframes语法2:使用百分数 */
@keyframes animation-name-2{
0% {
transform: translateX(10px);
}
50% {
transform: translateX(50px);
}
100% {
transform: translateY(100px);
}
}
/* animation语法 */
.someElement {
/* 不相关代码 */
animation: [动画名] [时长] [过渡方式] [延迟] [次数] [方向] [填充模式] [是否暂停];
/* 不相关代码 */
}
/* 举个例子 */
.someElement {
/* 不相关代码 */
animation: animation-name-1 5s infinite;
/* 不相关代码 */
}
animation属性值
- 时长:1s / 1000ms
- 过渡方式:linear等(与transition取值相同)
- 次数:3 / infinite
- 方向:reverse / alternate / alternate-reverse
- 填充模式:none / forwards / backwards / both
- 是否暂停:paused / running