前言
最近看css大佬chokcoco的文章,看到了这篇 探秘神奇的运动路径动画 Motion Path 关于css路径动画的文章。
之前没学过,这里按照大佬的文章进行简单的学习。
Motion Path
CSS Motion Path 规范主要包含以下几个属性:
- offset-path:接收一个 SVG 路径(与 SVG 的path、CSS 中的 clip-path 类似),指定运动的几何路径
- offset-distance:控制当前元素基于 offset-path 运动的距离
- offset-position:指定 offset-path 的初始位置
- offset-anchor:定义沿 offset-path 定位的元素的锚点。 这个也算好理解,运动的元素可能不是一个点,那么就需要指定元素中的哪个点附着在路径上进行运动
- offset-rotate:定义沿 offset-path 定位时元素的方向,说人话就是运动过程中元素的角度朝向
实例
因为需要用到svg路径,如果像我一样对svg不是很熟悉的话,可以使用在线工具进行svg图形的绘制。
下面的这个例子就是将绘制的svg图片作为背景图,让后复制路径值作为运动轨迹
在线svg绘制工具:传送门
<div class="main"> </div>
main {
width: 100%;
height: 100%;
position: relative;
background: url('../image/svg.svg');
&::before {
position: absolute;
content: "";
width: 20px;
height: 20px;
background: red;
border-radius: 50%;
offset-path: path(
"m60.90919,200.60579c48.91821,-95.68062 168.84674,-14.66637 168.05734,-15.36465c0.7894,0.69828 54.82285,-127.89438 86.79038,-79.61745"
);
offset-rotate: 0deg;
animation: move 3s infinite alternate ease-in-out;
}
}
@keyframes move {
0% {
offset-distance: 0%;
}
100% {
offset-distance: 100%;
}
}
效果