CSS offset 路径动画演示
笔记哥 /
05-11 /
42点赞 /
0评论 /
744阅读
什么是路径动画?
随手画一条不规则的线,让元素按照这条不规则的线运动起来,这就是所谓的路径动画。
前面说过的动画都只能针对某一个 CSS 属性,要想实现路径动画可没办法,路径动画必须借助 CSS3 的 `offset` 相关能力。
## offset 相关属性
要实现路径动画,必须用到 offset 的相关属性:
`offset-anchor` 指定元素的运动中心在哪个点上,默认是元素中心点。
`offset-distance` 指定元素沿路径的运动距离,100% 表示路径总长度。
`offset-rotate` 设置元素沿路径方向的旋转角度。
`offset-position` 定义元素沿路径的初始位置。
`offset-path` 指定元素运动路径。
`offset` 简写属性,包括以上所有属性。
### offset-anchor
设置中心的位置:

### offset-distance
设置元素在这个路径中的运动距离:

### offset-rotate
设置元素在路径上的旋转角度:

其中第一个 `auto` 表示让浏览器自己计算角度,第二个角度值表示在计算出来的角度基础上再旋转多少度。
### offset-position
说实话,没搞懂这属性的用法,虽然案例看起来属性值是有效的,但没理解到它的实际生效规则。
按照 w3c 的规范说法:如果 offset-path 属性使用的函数未指定起始位置时,则使用 offset-position 属性指定的起始位置。
看下图,虽然元素的位置变化了,但是路径动画的运动距离也跟着变化了!!真是没搞懂...

以上图片的代码:
```html
```
### offset-path 指定元素运动路径
`url()` 指定 SVG 形状元素的 ID,用法 `offset-path: url(#myCircle)`。
`ray()` 线段。用这东东还不如使用 transform 位移。
`circle()` 圆形,用法:circle(6rem at 12rem 8rem),表示:圆形,半径为 6rem,圆心为 12rem 8rem。
`ellipse()` 椭圆,用法 ellipse(40% 50% at left)。表示:椭圆,长轴为 40%,短轴为 50%,圆心为左边。
`polygon()` 多边形,语法 `polygon(x1 y1, x2 y2, x3 y3, ...)`
`inset()` 内嵌矩形,用法 inset(20px 50px 10px 0 round 50px)。表示:20px 50px 10px 0 分别表示上右下左的距离,圆角为 50px。
`rect()` 矩形,用法 rect(50px 150px 200px 50px round 20%)。表示:矩形上边在 50px,右边在 150px,下边在 200px,左边在 50px,圆角为 20%。
`xywh()` 矩形,用法 xywh(20px 20px 100% 100% round 10%)。表示:矩形从 20px 20px 开始,宽高为 100%,圆角为 10%。
`path()` 路径,最为强大的一个东东,复杂的路径动画都需要使用它。
各种路径动画:

上图源码:
```html
```
## 路径
这里说到的路径,使用到了 SVG 里面的相关知识,SVG 用于绘制矢量图形。
什么是矢量图形?矢量图形是由线条组成的图形,而不是由像素组成的图形,所以矢量图形在放大时,不会出现锯齿,也不会失真。
### 绘制一条复杂的路径
这里推荐一个网站:https://www.photopea.com/
此网站完全就是 PS 的在线版本,直接浏览器打开即可使用。
1、进入网站之后点击 `Start using Photopea` 开始使用。
2、有一个隐私选择,直接 `同意并继续` 即可,如果担心隐私问题,可以使用浏览器的 `无痕模式` 打开。
3、新建一个画布。

4、使用钢笔工具勾勒出想要的路径形状。
提示:钢笔工具在画布上按住拖动可以绘制出曲线。

5、导出 SVG 文件。

6、找到导出的 SVG ,用记事本打开,path 标签中的 `d` 属性就是路径的坐标值。

### 使用路径做路径动画
注意:本示例中为了看到运动路径,将 SVG 的代码也放在了代码中,实际无需 SVG 代码,仅需要 path 中的路径参数即可!
```html
```
效果:

## 写在最后
路径动画让 CSS 在动画领域拥有了更多创造性,虽然还有一些新的特性在浏览器中的兼容不太理想,但未来可期~~
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/3255
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利
- 相关联分享
- CSS position定位布局全解析
- CSS float 浮动布局应用场景
- JavaScript 3 种书写位置及 script 标签的正确存放位置
- JavaScript 的各种调试方法
- 细说 CSS grid 网格布局子元素相关属性
- 神奇的 transform 改变元素形状,matrix3d 矩阵变换算法演示
- CSS 选择器的优先级
- 移动端适配的视口元标签(meta)常见使用场景
- CSS @media 媒体查询不要只会视口宽度适配详解
- CSS 动画之过渡属性 transition 改变用户体验
- 纯 CSS 使用 column 属性实现瀑布流布局
- CSS offset 路径动画演示
- CSS flex 弹性盒子与 grid 网格布局区别及应用场景
- CSS Flex弹性盒子布局全解析
- Web前端入门之CSS 单位详解
- 浏览器如何确定最终的CSS属性值?解析计算优先级与规则
- 多图细说 CSS grid 网格布局父元素容器相关属性
- CSS 循环动画 animation 效果解析和演示
- Web前端入门之CSS中11种颜色写法全解析
- Web前端入门:CSS元素外观属性(边框、阴影、轮廓、透明度)
- 深入理解 CSS 变量 var() :实现主题换肤与代码功能
- CSS background 元素背景图用法全解
- Web前端入门:CSS常见布局的多种实现方式详解