【svg文字路径动画,让文字沿着路径动起来】

article/2025/10/23 10:27:03

在这里插入图片描述

最近项目里面用到了这个文字路径动画,不得不说确实挺好玩的,如果有需要的小伙伴可以参考!

代码片段

由于公司之前项目里也用到过,但是我是第一次写,所以第一时间还是先看看前辈是怎么处理的,借鉴一下长长经验哈哈,所以就找到了这个svg文字路径,上代码

(gif中第一个文字路径1)

<svgid="textPathDemo"class="round-text"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"width="500"viewBox="0 0 500 500"><pathid="text-path1"class="text-path"d="M40 12 H200 A28 28 0 0 1 226 40  V305 A28 28 0 0 1 200 332 H40 A28 28 0 0 1 12 306 V40 A28 28 0 0 1 40 12 H200 A28 28 0 0 1 226 40 V305 A28 28 0 0 1 200 332 H40 A28 28 0 0 1 12 306 V40 A28 28 0 0 1 40 12 z"fill="#ccc"stroke="#FF4444"stroke-dasharray="5,2"stroke-width="1"/><text class="circle-text"><textPath xlink:href="#text-path1" class="text-content" textLength="280" startOffset="0">svg文字路径动画111111111111111111<animate attributeName="startOffset" from="0" to="1020" begin="0s" dur="8s" repeatCount="indefinite" /></textPath><textPath xlink:href="#text-path1" class="text-content" textLength="280" startOffset="520">svg文字路径动画222222222222222222<animate attributeName="startOffset" from="520" to="1540" begin="0s" dur="8s" repeatCount="indefinite" /></textPath></text></svg>

属性介绍

找到代码后,就需要看一下属性都是什么意思了,介绍一下这里涉及到的属性

  1. 先看一下svg标签
  • width:顾名思义就是svg的宽度
  • viewBox:“x, y, width, height”,是svg容器的设置

    x:左上角横坐标,y:左上角纵坐标,width:宽度,height:高度
  1. path标签也就是用来定义svg路径的标签
  • d:是文字转动的路径,想让文字沿着圆转动,沿着长方形、菱形、平行四边形或者任何路径转动都可以,我是找了一个文档看了一下这个路径的书写规则,贴个链接,里面还可以在线测试,在线调整路径,我觉得还是挺好用的https://www.nhooo.com/svg/svg-path-element.html
  • fill:可以填充当前形状的颜色,gif中第一个文字路径1和文字路径2,灰色区域,设置填充颜色#ccc
  • stroke:描边颜色,gif中都是用的#FF4444
  • stroke-dasharray:虚线描边,可选值为none,inherit
    • none 肯定是表示不用虚线描边
    • inherit 这是一个逗号或者空格分隔的数值列表第一个值表示线段的长度,第二个值表示线段间空白的长度,gif中stroke-dasharray=“5 2"中,第一个数字 5 表示虚线中的线段的长度,而第二个数字 2 表示两个线段间的长度是 2px。所以出来的效果是每段虚线的间隔都是一样的。其实这个dasharray可以不只两个值,可以有很多个,会循环依次用到线段和空白之间。gif中最后一个文字路径9设置的stroke-dasharray=”(20,5)",是不是能明显感受到差别
  • stroke-width:描边宽度,gif中最后一个文字路径9为3,其他的都是1,类似border-width
  1. textPath标签也就是直接关系到文字的标签了,定义文字按照什么路径排列的
  • xlink:href : 这里是指这个文字用用哪条路径,注意我们在 path 那设置的 id 属性。
  • textLength : 表示文字的长度,可以根据想要的文字间距离来设置文字长度,文字长度越长,字与字之间距离越大,这里的280是我觉得文字距离比较适中。
  • startOffset : 表示文字开始的偏移量,也就是文字开始点在路径中的位置。
  1. animate标签就是动画了
  • attributeName:在动画中,父元素的需要被改变的属性名,类似我们的例子中使用了startOffset 作为attributeName,通过改变文字的偏移量让文字动起来。
  • from:动画初始值
  • to:动画最终值
  • begin:动画开始的延时
  • dur:整个动画的时间
  • repeatCount:动画重复次数,indefinite是无限次,就是一直循环,如果是1的话,那么意思是动画只执行一次

路径长度计算

gif中每个例子中的长度其实都是我一点点调的,到现在我也不太清楚这个计算方式应该是怎么算。

我们看一下gif中,前面两组看不出任何破绽,都是无限重复循环的,但是这个路径长度如果计算不好会怎么样呢,看一下最右边那组文字路径8,很明显在走完一遍后文字消失在了最右边,这就是长度写的太长了,导致文字已经到达文字边缘了,但是还有一截长度没走完,页面上看起来就消失了,但是上面路径6路径7长度写的就会短一些,所以到最后还灭消失的时候又返回到了起点。


建议如果也不知道咋写的可以慢慢调试,但是作为程序员,写数据类的东西还是要精确一点。所以我又去找了各大文档文章等,然后看到了snap.svg.js的库,然后有个方法是可以计算出路径长度的Snap.path.getTotalLength(path)

let path = "M40 12 H200 A28 28 0 0 1 226 40  V305 A28 28 0 0 1 200 332 H40 A28 28 0 0 1 12 306 V40 A28 28 0 0 1 40 12 H200 A28 28 0 0 1 226 40 V305 A28 28 0 0 1 200 332 H40 A28 28 0 0 1 12 306 V40 A28 28 0 0 1 40 12 z"
let pathLength = Snap.path.getTotalLength(path)
console.log(pathLength);

由于我项目里面那个文字动画已经搞定了,所以就没有继续引这个库去尝试,大家可以参考一下,如果项目允许的话可以尝试一下~

补充路径

//文字路径5 圆形
d="M 200 200 m -96 0 a 96 96 0 1 0 192 0 a 96 96 0 1 0 -192 0 M 200 200 m -96 0 a 96 96 0 1 0 192 0 a 96 96 0 1 0 -192 0"
//最后一组 路径都一样,只是属性不一样
d="M10,180 q100,120 120,20 q140,-50 160,0 q100,120 120,20 q140,-50 160,0"

总结

文字动画最重要的是路径,要文字沿着怎样的路径去运动,先确定路径之后再去看路径长度,路径长度比较笨的办法是自己一点点调,当然项目允许的话肯定还是要引库进去,能更精确一些,也是第一次跟svg文字路径动画打交道,知道的还不够详细,欢迎大家补充~有写错的地方也希望能指正~


http://chatgpt.dhexx.cn/article/AdsVLAsQ.shtml

相关文章

Qml路径动画-PathAnimation

Qml中的PathAnimation可以让目标沿着一个指定路径运行。 PathAnimation的属性 anchorPoint&#xff1a;使用"x,y"来指定运动的锚定点。orientation&#xff1a;指定控制目标对象沿着路径运动的旋转策略。path属性的类型为Path&#xff0c;选择你要构造的路径。 sta…

dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画

[Toc] 本文及系列参考于Andy老师的DOTween系列 欢迎大家关注**Andy老师** 10、获取数据 类方法 返回所有暂停的动画&#xff0c;没有则返回null var list DOTween.PausedTweens(); 返回所有真正播放的动画&#xff0c;没有则返回null var list DOTween.PlayingTweens(); 获取…

houdini:固定朝向的路径动画

涉及节点&#xff1a;follow path 一、模型准备 路径、朝向的物体&#xff0c;以及运动的物体&#xff0c;一共三个 二、follow path 节点 原来xxxx是一个属性&#xff0c;现在好像必须在创建路径动画的时候就选择xxx了 下面请紧跟我的步骤 steep1&#xff1a;点击follow p…

Dotween运动曲线与路径动画

Dotween运动曲线与路径动画 Dotween--运动曲线内置的运动曲线AnimationCurve Dotween--路径动画一:设置一个数组存放位置坐标二:直接写出自己想要到的坐标 Dotween–运动曲线 想要理解Dotwenn的运动曲线&#xff0c;最重要的一步就是要理解坐标的的含义&#xff0c;这里看图讲…

AE路径动画

动画效果预览 一、AI跑道汽车 注&#xff1a;绘制完成后&#xff0c;给需要作动效的部位进行单独新建图层并命名&#xff1b; ctrl c&#xff0c;ctrlf原位粘贴 二、导入AE 具体导入方法请查看此文&#xff1a; AE动画导入/导出_TING糖的博客-CSDN博客AE导入/导出方式http…

Cinemachine教程 | Unity中如何制作路径动画?

摘要&#xff1a;在Unity中制作路径动画是有挺多方式的&#xff0c;基于Cinemachine的Dolly Path是一个简单便捷的方法&#xff0c;咱们来快速的学习一下吧&#xff01; 洪流学堂&#xff0c;让你快人几步。你好&#xff0c;我是跟着大智(VX: zhz11235)学Unity的萌新&#xff0…

Android实现 曲线路径动画

本文参考 https://www.jianshu.com/p/fea4d1f6512a 概述 近期碰到曲线动画的实现问题&#xff0c;写本文记录下。 动画类似“剑与远征”游戏的金币动画&#xff0c;动画路径如下图&#xff1a; 思路 通过贝塞尔曲线计算出x和y的位置&#xff08;各个点的位置需要自己微调&am…

WPF实现路径动画

让目标沿着一条给定的路径移动&#xff0c;使用DoubleAnimationUsingPath类实现。实现如下。 点击鼠标移动 实现代码如下&#xff1a;界面XAML <Grid x:Name"LayoutRoot"> <Grid.Resources> <PathGeometry x:Key"movingPath…

Houdini:最小白的路径动画

涉及节点&#xff1a;curve、constraints、follow path 涉及知识&#xff1a;路径动画、约束 提一嘴maya的路径动画&#xff1a;在constrain-->motion paths -->attach motion path中 一、模型准备 一个模型和一个curve曲线&#xff0c;分别在两个geometry里面&#…

UE5蓝图时间轴摄影机路径动画

1. 新建蓝图类Actor 2. 蓝图里添加Spline和Camera组件&#xff0c;另外添加一个Scene场景组件&#xff0c;可以把Camera拖到Scene的子级&#xff0c;这样做可以让Camera在沿着路径运动的时候自由更改旋转方向 3. 打开关卡蓝图&#xff0c;首先按键获取MovingLine的Camera视角&a…

html5 路径运动,探秘神奇的运动路径动画 Motion Path

CSS 中有一个非常有意思的模块 -- CSS Motion Path Module Level 1,翻译过来也就是运动路径。本文将对 motion path 一探究竟,通过本文,你可以了解到:什么是 CSS motion path 使用 CSS motion path 制作简单路径动画 使用 CSS motion path 制作复杂路径动画 什么是 CSS Mot…

canvas绘制折线路径动画

最近有读者加我微信咨询这个问题&#xff1a; 其中的效果是一个折线路径动画效果&#xff0c;如下图所示&#xff1a; 要实现以上路径动画&#xff0c;一般可以使用svg的动画功能。或者使用canvas绘制&#xff0c;结合路径数学计算来实现。 如果用canvas来绘制&#xff0c…

路径动画

工作日记&#xff0c;最近做项目遇到一个有意思的动画效果&#xff0c;路径动画&#xff0c;做一个demo&#xff0c;方便以后查阅&#xff0c;也供初学者借鉴&#xff01; 效果如下图&#xff1a; 效果分两步&#xff1a; 第一步是把书翻开&#xff0c;是一个贞动画&#xf…

openlayers实现路径动画

实现效果如下 主要代码 import {Feature} from ol; import {LineString, Point} from ol/geom; import {Icon, Stroke, Fill, Style} from ol/style; import {getVectorContext} from ol/render;// 路径动画图层 let traceSource new VectorSource({}); let moveLayer new…

咸鱼Maya笔记—路径动画

咸鱼Maya笔记—路径动画 创建路径动画 动画的创建方式有很多种&#xff0c;路径动画是其中的一种&#xff0c;Key关键帧的方式并不适用于所有的情况&#xff0c;有些特定的情况下我们就需要用到路径动画&#xff0c;它的创建方法如下 创建路径动画 &#xff08;如果你的maya菜…

CSS 路径动画

前言 最近看css大佬chokcoco的文章&#xff0c;看到了这篇 探秘神奇的运动路径动画 Motion Path 关于css路径动画的文章。 之前没学过&#xff0c;这里按照大佬的文章进行简单的学习。 Motion Path CSS Motion Path 规范主要包含以下几个属性&#xff1a; offset-path&…

AnimationPath路径动画实现详解

AnimationPath路径动画实现详解&#xff1a; 一、关联类图展示 二、实现详解 首先我们通过调用createAnimationPath方法来创建动画路径&#xff0c;即&#xff1a;通过起点、终点以及之间的时间步长来进行插值来保证动画的一个流畅度&#xff0c;然后将这些时间和点保存到一个…

Dotween Path 路径动画使用方法详解

Dotween对于路径动画部分的api我觉得注释的过少了&#xff0c;很多用法没有写清楚&#xff0c;这里我就对Dotween Path做一下详细说明 1、API Dotween对于路径动画就只提供了两个方法&#xff0c;一个是针对于世界坐标的&#xff0c;一个是针对于局部坐标的&#xff0c;本质上…

WPF路径动画

特此声明&#xff1a;本文为CSDN博主「田野上的风筝」&#xff0c;原文地址&#xff1a;https://blog.csdn.net/weixin_43100896/article/details/87899883。感谢大佬的总结&#xff0c; 下文为转载内容。 在WPF中实现动画并不是什么困难的事&#xff0c;因为WPF提供了动画模型…

10路径动画

using System.Collections; using System.Collections.Generic; using System.Linq; using DG.Tweening; using UnityEngine;public class PathMove : MonoBehaviour {public Transform[] pointList;void Start(){//select方法,直接得到值,查询要返回的目标数据 int[] numm {…