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('思考中...');
相关推荐
m0_738120724 分钟前
渗透测试基础ctfshow——Web应用安全与防护(四)
前端·安全·web安全·网络安全·flask·弱口令爆破
似水流年QC10 分钟前
Chrome Performance 面板前端性能分析从入门到实战
前端·chrome
君穆南11 分钟前
docker里面的minio的备份方法
前端
Thomas214311 分钟前
--remote-debugging-port=9222 和 chrome://inspect/#remote-debugging 区别
前端·chrome
Luna-player11 分钟前
二本生找前端工作
前端
M ? A14 分钟前
Vue3 转 React 工具 VuReact v1.6.0 更新:useAttrs 完美兼容,修复模板迁移 / 类型错误
前端·javascript·vue.js·react.js·开源·vureact
低保和光头哪个先来18 分钟前
解决 ios 使用 video 全屏未铺满页面问题
前端·javascript·vue.js·ios·前端框架
MacroZheng21 分钟前
全面升级!看看人家的后台管理系统,确实清新优雅!
前端·vue.js·typescript
Mintopia24 分钟前
一套简单但有效的"代码可读性"提升法:不用重构也能清爽
前端
禅思院34 分钟前
一个轻量级 Vue3 轮播组件:支持多视图、滑动距离决定切换数量,核心原理与 Swiper 对比
前端·vue.js·typescript