基于 Letterize.js + Anime.js 实现炫酷文本特效

如上面gif动图所示,这是一个很炫酷的文字动画效果,文字的每个字符呈波浪式的扩散式展开。本次文章将解读如何实现这个炫酷的文字效果。

基于以上的截图效果可以分析出以下是本次要实现的主要几点:

  • 文案呈圆环状扩散开,扩散的同时文字变小
  • 文字之间的间距从中心逐个扩散开,间距变大
  • 文案呈圆环状扩散开,扩散的同时文字变大
  • 文字之间的间距从中心逐个聚拢,间距变小
  • 动画重复执行以上4个步骤

实现过程

核心代码实现需要基于一下两个库:

Letterize.js是一个轻量级的JavaScript库,它可以将文本内容分解为单个字母,以便可以对每个字母进行动画处理。这对于创建复杂的文本动画效果非常有用。

使用Letterize.js,你可以轻松地将一个字符串或HTML元素中的文本分解为单个字母,并为每个字母创建一个包含类名和数据属性的新HTML元素。这使得你可以使用CSS或JavaScript来控制每个字母的样式和动画。

anime.js是一个强大的JavaScript动画库,它提供了一种简单而灵活的方式来创建各种动画效果。它可以用于HTML元素、SVG、DOM属性和JavaScript对象的动画。

通过使用Letterize.js以便可以对每个字母进行动画处理,再结合anime.js即可创建各种动画效果。本文不对这两个库做更多的详细介绍,只对本次特效实现做介绍,有兴趣的可以看看官网完整的使用文档。

界面布局

html就是简单的本文标签,也不需要额外的样式,只需要在外层使用flex布局将内容居中,因为本文的长度都是一样的,所以完成后的文本内容就像一个正方形。

<div>
      <div class="animate-me">
        letterize.js&anime.js
      </div>
      <div class="animate-me">
        anime.js&letterize.js
      </div>
      ......
      <div class="animate-me">
        letterize.js&anime.js
      </div>
      <div class="animate-me">
        anime.js&letterize.js
      </div>
    </div>

动画实现

  1. 初始化 Letterize.js,只需要传入 targets 目标元素,元素即是上面的 .animate-me 文本标签。返回的 letterize 是包含所有选中的 .animate-me 元素组数。
const letterize = new Letterize({
  targets: ".animate-me"
});
  1. 接下来初始化 anime 库的使用,下面的代码即创建了一个新的anime.js时间线动画。目标是Letterize对象的所有字母。动画将以100毫秒的间隔从中心开始,形成一个网格。loop: true 动画将无限循环。
const animation = anime.timeline({
  targets: letterize.listAll,
  delay: anime.stagger(100, {
    grid: [letterize.list[0].length, letterize.list.length],
    from: "center"
  }),
  loop: true
});

  1. 开始执行动画,首先设置 「文案呈圆环状扩散开,扩散的同时文字变小」,这里其实就是将字母的大小缩小。
animation
  .add({
    scale: 0.5
  })

此时的效果如下所示:

  1. 继续处理下一步动画,「文字之间的间距从中心逐个扩散开,间距变大」,这里处理的其实就是将字母的间距加大,通过设置 letterSpacing 即可,代码如下:
animation
  .add({
    scale: 0.5
  })
  .add({
    letterSpacing: "10px"
  })

此时的效果如下所示:

  1. 后面还有2个步骤,「文案呈圆环状扩散开,扩散的同时文字变大;文字之间的间距从中心逐个聚拢,间距变小」,换做上面的思路也就是将文字变大和将文字间距变小,增加相应的代码如下:
  .add({
    scale: 1
  })
  .add({
    letterSpacing: "6px"
  });

最后

本文通过纯 Letterize.js + Anime.js 实现了一个很炫酷的文字动画效果,文字的每个字符呈波浪式的扩散式展开和收起。anime.js还有很多的参数可以尝试,有兴趣的朋友可以尝试探索看看~

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)

参考

动画效果发布者 Wojciech Krakowiakhttps://codepen.io/WojciechWKROPCE/pen/VwLePLy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/142887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8-Seg改进:分割注意力系列篇 | 轻量级上采样CARAFE算子,助力小目标分割

🚀🚀🚀本文改进:轻量级上采样CARAFE算子,引入到YOLOv8,neck处 Upsanple替换为CARAFE 🚀🚀🚀CARAFE在小目标分割领域中应用广泛 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教…

LeetCode | 20. 有效的括号

LeetCode | 20. 有效的括号 OJ链接 这道题可以使用栈来解决问题~~ 思路&#xff1a; 首先我们要使用我们之前写的栈的实现来解决此问题~~如果左括号&#xff0c;就入栈如果右括号&#xff0c;出栈顶的左括号跟右括号判断是否匹配 如果匹配&#xff0c;继续如果不匹配&#…

算法笔记-第五章-质因子分解

算法笔记-第五章-质因子分解 小试牛刀质因子2的个数丑数 质因子分解最小最大质因子约数个数 小试牛刀 质因子2的个数 #include<cstdio> int main() {int n; scanf_s("%d", &n); int count 0; while (n % 2 0) {count; n / 2; }printf("%…

【Mysql系列】Mysql基础篇

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

部署 KVM 虚拟化平台

虚拟化技术的演变过程分为软件模拟、虚拟化层翻译、容器虚拟化三个阶段 1 软件模拟的技术方式 软件模拟是通过软件完全模拟CPU、网卡、芯片组、磁盘等计算机硬件&#xff0c;因为是软件模拟&#xff0c;所以理论上可以模拟任何硬件&#xff0c;甚至不存在的硬件。但是由于是软…

Changes to Captions: An Attentive Network forRemote Sensing Change Captioning

字幕的变化&#xff1a;一个用于遥感变化字幕的关注网络 IEEE Transactions on Image Processing Shizhen Chang, Pedram Ghamisi 2023 摘要&#xff1a;近年来&#xff0c;高级研究集中在使用自然语言处理&#xff08;NLP&#xff09;技术对遥感图像进行直接学习和分析。准…

如何应对招聘中的职业性格测评?

很多同学听说要做性格测试&#xff0c;第一反应是如何让自己的性格让HR看起来更好....没办法为了顺利入职&#xff0c;咱不能老实作答&#xff0c;因为性格测评搞不好是真刷人的&#xff0c;刷人的&#xff08;无视你的专业能力和笔试成绩&#xff09;..... 可是....很多性格测…

C++标准模板(STL)- 类型支持 (受支持操作,检查类型是否拥有未被弃置的析构函数)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

ARPG----C++学习记录04 Section8 角色类,移动

角色类输入 新建一个角色C&#xff0c;继承建立蓝图,和Pawn一样&#xff0c;绑定输入移动和相机. 在构造函数中添加这段代码也能实现。打开UsePawnControlRotation就可以让人物不跟随鼠标旋转 得到旋转后的向前向量 使用旋转矩阵 想要前进方向和旋转的方向对应。获取当前控制…

Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开webcast.airdroid.com。这就是AirDroid Cast的网页版。你可以看到中间白色框框的右上角有个…

简单地聊一聊Spring Boot的构架

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 本文小编将详细解析Spring Boot框架&#xff0c;并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的…

GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口 | 开源日报 No.75

hasura/graphql-engine Stars: 30.3k License: Apache-2.0 Hasura GraphQL Engine 是一个开源产品&#xff0c;通过为您的数据提供 GraphQL 或 REST API 以及内置授权来加速 API 开发。它具有以下主要功能和核心优势&#xff1a; 内建强大查询&#xff1a;支持过滤、分页、模…

Cnyunwei

运维管理系统&#xff1a;监控系统 Cnyunwei Centos 6 封装 Cacti、Nagios、Centreon&#xff08;中英文自己切换&#xff09;、Check_MK、Nconf英文版本全部采用与国外官方同步的最新版本&#xff0c;会发布32位和64位两个版本。 安装很简单&#xff0c;直接回车即可全自动安…

如何在TS中使用JS库

在 TypeScript 中使用 JavaScript 库&#xff0c;几种常用的方法。 直接使用&#xff1a;如果 JavaScript 库不提供 TypeScript 类型定义文件&#xff08;.d.ts&#xff09;&#xff0c;您可以直接在 TypeScript 代码中使用该库。您可以通过在 TypeScript 代码的开头添加 //ts-…

模拟接口数据之使用Fetch方法实现

文章目录 前言一、package.json配置mock执行脚本二、封装接口&#xff0c;区分走ajax还是fetch三、创建mock目录&#xff0c;及相关接口文件四、定义接口五、使用mock数据使用模拟数据优化fetch返回数据 六、不使用模拟数据七、对比其他需要使用依赖相关配置如有启发&#xff0…

HTML字符实体

从注释汲取知识&#xff0c;由代码熟悉用法&#xff0c;所以直接看代码吧&#xff01;&#x1f447;&#x1f447;&#x1f447; <body><!-- 空格 --><!-- 三个空格&#xff0c;实际只显示一个 --><div>我 嘎嘎嘎</div><!-- 用字符实体代替…

C++引用 引用做函数参数

一.引用的定义和语法 // 给a取别名为b int &b a; // 修改b的值&#xff0c;a的值也会被修改&#xff0c;因为他们都指向同一个内存空间 b 20; 二.引用的注意事项 1.引用必须初始化如 int&b; 是错误的&#xff0c;因为没有初始化。 2.引用在初始化后&#xff0c;不…

聚观早报 |滴滴发布Q3财报;小鹏G9连续销量排行第一

【聚观365】11月14日消息 滴滴发布Q3财报 小鹏G9连续销量排行第一 XREAL双11实现7倍增长 真我GT5 Pro真机图 2024年智能手机AI功能竞争激烈 滴滴发布Q3财报 滴滴在其官网发布2023年三季度业绩报告。报告显示&#xff0c;三季度滴滴实现总收入514亿元&#xff0c;同比增长…

Command Injection

Command Injection "Command Injection"(命令注入)&#xff0c;其目标是通过一个应用程序在主机操作系统上执行任意命令。当一个应用程序将用户提供的数据&#xff08;如表单、cookies、HTTP头等&#xff09;传递给系统shell时&#xff0c;就可能发生命令注入攻击。在…

分享几个艺术生活小站点

今天分享几个艺术生活小站点&#xff01; 小叽News游戏资源分享 网址&#xff1a;https://steamzg.com/ 欢迎来到这个充满活力的游戏站点&#xff0c;这里汇集了各种类型的游戏&#xff0c;让你一次性尽享各种游戏的乐趣。这里是游戏爱好者的天堂&#xff0c;每款游戏都配有详…
最新文章