@keyframes方式
正常直接通过@keyframes定义动画,然后DOM通过animation调用动画既可以实现动画效果
<style>
@keyframes move {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(1000px, 0);
}
}
div {
width: 100px;
height: 100px;
background-color: pink;
/* 动画名称 */
animation-name: move;
/* 持续时间 */
/* animation-duration: 2s; */
/* 运动曲线 */
/* animation-timing-function: ease; */
/* 何时开始 */
animation-delay: 1s;
/* 重复次数 iteration 重复的 conut 次数 infinite 无限 */
/* animation-iteration-count: infinite; */
/* 是否反方向播放 默认的是 normal 如果想要反方向 就写 alternate */
/* animation-direction: alternate; */
/* 动画结束后的状态 默认的是 backwards 回到起始状态 我们可以让他停留在结束状态 forwards */
/* animation-fill-mode: forwards; */
/* animation: name duration timing-function delay iteration-count direction fill-mode; */
/* animation: move 2s linear 0s 1 alternate forwards; */
/* 前面2个属性 name duration 一定要写 */
/* animation: move 2s linear alternate forwards; */
}
div:hover {
/* 鼠标经过div 让这个div 停止动画,鼠标离开就继续动画 */
animation-play-state: paused;
}
</style>
JS控制DOM元素做动画
为元素设定animate属性:关键帧与属性两部分
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="./promise.js"></script>
<style>
div {
position: absolute;
top: 200px;
width: 265px;
height: 265px;
background-color: pink;
}
</style>
</head>
<body>
<div>
</div>
<script>
var div = document.querySelector('div')
div.onclick = function () {
this.animate(
[ //关键帧(数组包裹对象)
{transform: 'translateX(0)'}, // 第一帧
{transform:'translate(200px, -50%)',opacity:'.8'}, // 第二帧
{transform:'translate(400px, 500px)',opacity:'.5'}, // 第三帧
],
{
duration: 1000, // 动画时长 (单位毫秒)
iterations: Infinity, // 重复次数 (无限循环:Infinity)
fill:'backwards', //结束时不复位
delay:0, // 设置动画延迟时长 (单位毫秒)
easing:'linear' //设置动画 运动速率 (linear: 匀速)
},
)
}
</script>
</body>
</html>
```