You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GSAP实现参考站点同款文字形变动画效果?

Text

GSAP文字波浪动画实现方案

核心逻辑

该效果通过拆分文字为独立可控制的字符节点,配合GSAP的交错动画(stagger)实现波浪起伏效果,无需依赖其他复杂插件。

实现步骤

  • 拆分目标文本的每一个字符为独立<span>标签,可使用GSAP官方的SplitText插件,也可手动拆分避免使用付费插件
  • 为拆分后的字符设置display: inline-block,并将变换原点设置为底部中心,保证动画自然
  • 绑定鼠标进入、离开事件,为字符添加带延迟差的Y轴位移动画,通过调整延迟差控制波浪的流动速度

代码示例

基础实现(含SplitText插件)

<div class="hover-wave-text">示例文本</div>

<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.2/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.2/dist/SplitText.min.js"></script>
<script>
// 拆分文本为单个字符
const splitText = new SplitText('.hover-wave-text', { type: 'chars' })
const chars = splitText.chars

// 初始化字符样式
gsap.set(chars, {
  display: 'inline-block',
  transformOrigin: '50% 100%'
})

const textContainer = document.querySelector('.hover-wave-text')
// 悬停上移动画
textContainer.addEventListener('mouseenter', () => {
  gsap.to(chars, {
    y: -18,
    duration: 0.4,
    ease: 'power2.out',
    stagger: 0.05
  })
})
// 离开复位动画
textContainer.addEventListener('mouseleave', () => {
  gsap.to(chars, {
    y: 0,
    duration: 0.3,
    ease: 'power2.inOut',
    stagger: 0.03
  })
})
</script>

无SplitText版本(手动拆分字符)

如果不想使用付费插件,可替换文本拆分逻辑:

const textContainer = document.querySelector('.hover-wave-text')
const rawText = textContainer.textContent
// 手动拆分字符
textContainer.innerHTML = rawText.split('').map(char => `<span>${char}</span>`).join('')
const chars = textContainer.querySelectorAll('span')

调整动画的位移距离、时长、stagger延迟数值即可匹配你需要的效果。


内容的提问来源于stack exchange,提问作者Md Habibur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:24:07