3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果

前言:为什么要学波浪文字动画?

经常在 AI 聊天框、APP 加载页看到那种文字跟着波浪闪的效果,明明只是简单的亮暗变化,但是感觉瞬间让页面有了呼吸感。

思路

  1. 把一句话拆成单个文字(比如 "思考中..." 拆成 "思""考""中"".""."".")
  2. 给每个文字加 "亮→暗→亮" 的基础动画
  3. 给每个文字设置递增的延迟时间(第 1 个 0 秒开始,第 2 个 0.1 秒,第 3 个 0.2 秒......)

代码实现

HTML

html 复制代码
<div id="waveTextContainer">
  <!-- 每个字符一个span,延迟依次加0.1秒 -->
  <span class="wave-char" style="animation-delay: 0s">思</span>
  <span class="wave-char" style="animation-delay: 0.1s">考</span>
  <span class="wave-char" style="animation-delay: 0.2s">中</span>
  <span class="wave-char" style="animation-delay: 0.3s">.</span>
  <span class="wave-char" style="animation-delay: 0.4s">.</span>
  <span class="wave-char" style="animation-delay: 0.5s">.</span>
</div>

CSS

CSS 复制代码
/* 单个字符的基础样式 */
.wave-char {
    opacity: 0.3;           /* 平时是暗的(30%透明度) */
    color: #333;            /* 暗态颜色(深灰) */
    font-size: 18px;       
    display: inline-block; 
    /* 动画:名字 时长 缓动效果 无限循环 */
    animation: waveAnimation 2s ease-in-out infinite;
}

/* 定义"亮→暗→亮"的动画过程 */
@keyframes waveAnimation {
    0% {
        opacity: 0.3;       /* 开始:暗态 */
        color: #333;
    }
    50% {
        opacity: 1;         /* 中间:完全亮(100%透明度) */
        color: #0084ff;    
    }
    100% {
        opacity: 0.3;       /* 结束:回到暗态,循环 */
        color: #333;
    }
}

JavaScript

javascript 复制代码
// 目标:传入文字,自动生成波浪动画
function createWaveText(text) {
    // 1. 拿到容器
    const container = document.getElementById('waveTextContainer');
    // 2. 先清空容器(避免重复添加)
    container.innerHTML = '';
    // 3. 把文字拆成单个字符的数组
    const charList = text.split('');
    
    // 4. 遍历每个字符,生成span
    charList.forEach((char, index) => {
        const span = document.createElement('span');
        span.textContent = char === ' ' ? '\u00A0' : char;
        // 加样式类
        span.className = 'wave-char';
        // 关键:延迟时间 = 索引 * 0.1秒
        span.style.animationDelay = `${index * 0.1}s`;
        // 把span放进容器
        container.appendChild(span);
    });
}

// 调用函数
createWaveText('思考中...');
相关推荐
爱勇宝44 分钟前
小红花成长新版:模板来了,鼓励也更容易开始
前端·后端·程序员
竹林8181 小时前
Solana前端开发:我在一个NFT铸造页面上被@solana/web3.js的Connection和Transaction签名坑了两天
前端
冬奇Lab2 小时前
每日一个开源项目(第144篇):ai-website-cloner-template - 一条命令、多 Agent 并行,把任意网站逆向成 Next.js 代码
前端·人工智能·开源
玄玄子2 小时前
webpack publicPath作用原理
前端·webpack·程序员
HduSy2 小时前
帮 Claude Code 做了个菜单栏 Token 看板,聊聊里面的一些实现逻辑
前端
用户059540174462 小时前
用了6个月LangChain,才发现AI Agent的记忆存储一直有坑——写了23个Pytest用例才彻底修好
前端·css
奶油mm2 小时前
我偷偷把公司的祖传 jQuery 项目改成了 Vue3,CTO 没发现,但全组都来抄我的代码了
前端
用户2136610035722 小时前
Vue2非父子通信与动态组件
前端·vue.js
PedroQue992 小时前
Vite插件体系1.0.0:API稳定,生产就绪
前端·vite
用户059540174462 小时前
把LLM记忆测试从手工脚本换成Pytest参数化,回归时间从2小时降到10分钟
前端·css