复刻antfu大佬的svg签名效果

I love three things in the world, the sun the moon and you, the sun is for the day, the moon is for the night and you forever

前言

在逛antfu大佬的个人网站时,看到一个很有风格的艺术签名,而且就像在网页上自动签字的效果一样,感觉很酷呢!

好了,不羡慕了,我立刻,马上想要一个。

准备工作

先了解 SVG,以及SVG的动画,还有如何设计线条,有了方向,有了疑问,接下来就好说了,向着方向,解决疑问就ok了,这里我查看了三篇大佬的博文:

  1. How SVG Line Animation Works
  2. Animated line drawing in SVG
  3. Animated SVG logo

感兴趣可以去看看,或者接着看这篇文章

线条设计

这里我使用了 figma 工具来进行设计:

  1. 先找一个你想要的艺术连体字
  2. 使用 figma 钢笔工具,按照这个连体字打点描绘
  3. 将打点完成的线条导出为 SVG

最终SVG效果:

自己觉得满意就行

SVG图形

在这种线段图形中,有两个重要的属性stroke-dasharray和stroke-dashoffset

stroke-dasharray:允许您指定线条的渲染部分的长度,然后指定间隙的长度 stroke-dashoffset:允许您更改 dasharray 的开始位置

当stroke-dasharray和stroke-dashoffset其实都是一个足够大的值(超过了线条的长度)时,这时会是一个完整的图案,随着 dashoffset 减小变成0的过程就是一个绘画的过程了,最后通过css添加上动画,就可以让这个 svg 看起来自动签名的感觉了。

动画

css 复制代码
@media (prefers-reduced-motion) {
  path {
    animation: none !important;
    stroke-dasharray: unset !important;
  }
}
@keyframes grow {
  0% {
    stroke-dashoffset: 1px;
    stroke-dasharray: 0 600px;
    opacity: 0;
    stroke: #00aeef;
  }
  10% {
    opacity: 1;
  }
  40% {
    stroke-dasharray: 600px 0;
    stroke: #ed1c24;
  }
  /* Moving back */
  85% {
    stroke-dasharray: 600px 0;
    stroke: #8cd790;
  }
  95%,
  to {
    stroke-dasharray: 0 600px;
    stroke: #f69f37;
  }
}
path {
  stroke-dashoffset: 1px;
  stroke-dasharray: 600px 0;
  animation: grow 10s ease forwards infinite;
  transform-origin: center;
  stroke: #303030;
  animation-delay: 0s;
}

记得 dasharray 的长度一定要大于等于svg中线条的长度,不然就会变成分段线条

相关推荐
计算机魔术师几秒前
OpenAI 砍掉 100 亿融资目标,AI 资本市场的温度计变了
前端
jktantan20 分钟前
(二)Vue 3 的 attrs 不是响应式:el-form 扩展属性同步的三种方案
前端·javascript·vue.js·element-plus
前端 贾公子41 分钟前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库
用户360055579001 小时前
Kestrel_VLLM - 26 · 发射空档三步曲:事件计时 → nsys → 判别实验
前端
echome8881 小时前
JavaScript async/await 错误处理:别让 Promise 静默失败
开发语言·前端·javascript·promise
PedroQue991 小时前
v0.2.0 架构升级:class + reactive 重塑状态管理
前端·uni-app
鶴哥只手遮天1 小时前
Angular 22 源码级深度解析-第 02 章 编译链路总览:从模板字符串到 `ɵɵ` 指令
前端·开源·angular.js
尘世中一位迷途小书童1 小时前
别再堆万字 Prompt:用 Agent Skills 给团队写一个「前端 Review」Skill
前端·ai编程·cursor
aixingpan1 小时前
aixingpan.cn API开发文档:api_docs_bichart_common2接口指南
前端·php
super_Omni1 小时前
text/PDF/Word → 解析成纯文本 → 分词 → 词表匹配 → 加权打分 → 低于阈值
前端·chrome