animation
// 要绑定的关键帧规则名称
animation-name: slidein;
// 定义动画完成一个周期所需的时间,秒或毫秒
animation-duration: 3s;
// 定义动画速度曲线
animation-timing-function: ease;
// 定义动画开始前的延迟时间
animation-delay: 1s;
// 定义动画播放次数:n 具体次数;infinite:无限循环;
animation-iteration-count: infinite;
// 定义动画是否反向播放
animation-direction: normal;
// 定义动画再执行前后如何应用样式
animation-fill-mode: forwards;
// 控制动画播放状态:running 正在播的;paused 暂停;
animation-play-state: running;
// 简写 animation 属性
// animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation-timing-function: ease;(定义动画速度曲线)
ease |
(默认)慢-快-慢 |
linear | 匀速 |
ease-in | 慢开始 |
ease-out | 慢结束 |
ease-in-out | 满开始、慢结束 |
cubic-bezier(n, n, n, n) | 自定义曲线 |
animation-direction: normal;(定义动画是否反向播放)
normal | 正常播放 |
reverse | 反向播放 |
alternate | 轮流正反向 |
alternate-reverse | 先反向、后正向 轮流 |
animation-fill-mode: forwards;(定义动画再执行前后如何应用样式)
none | (默认)不应用任何样式 |
forwards | 保持最后一帧样式 |
backwards | 应用第一帧样式(考虑 delay) |
both | 同时应用 forwards 和 backwards |
@keyframes 规则
// 定义动画的关键帧
@keyframes slidein{
from {
transform: translateX(0%);
}
50% {
transform: translateX(50%);
opacity: 0.5;
}
to {
transform: translateX(100%)
opacity: 1;
}
}
性能考虑
优先使用 transform 和 opacity 属性进行动画,这些属性可以由浏览器高效处理;
避免动画过多元素,可能导致性能问题;
使用 will-change 属性预先告知浏览器哪些元素会变化;
.element {
will-change: transform, opacity;
}
CSS will-change 属性详解
是一个性能你优化属性,它允许开发者提前告知浏览器哪些元素属性即将发生变化,让浏览器可以提前做好优化准备。
/* 基本语法 */
will-change: auto | <animateable-feature> | scroll-position | contents;
auto | 默认值,表示浏览器不会做任何特殊优化 |
ps. transform opacity ... | 特定属性,指即将变化的CSS属性名称 |
scroll-position | 表示元素的滚动位置即将改变 |
contents | 表示元素的内容即将改变 |