0

0

为每个动态生成的图片元素应用独立的 CSS 动画延迟

霞舞

霞舞

发布时间:2026-03-11 13:44:30

|

236人浏览过

|

来源于php中文网

原创

本文讲解如何在 javascript 中为通过 document.createelement('img') 动态创建的图片元素,逐个设置不同的 animation-delay 值,实现异步“浮动”(bobbing)动画效果,避免依赖硬编码 class 或额外遍历。

本文讲解如何在 javascript 中为通过 document.createelement('img') 动态创建的图片元素,逐个设置不同的 animation-delay 值,实现异步“浮动”(bobbing)动画效果,避免依赖硬编码 class 或额外遍历。

在构建基于字符映射的图像化文本渲染器(如将输入文字转为 PNG/SVG 图片序列)时,常需为每个 为每个动态生成的图片元素应用独立的 CSS 动画延迟 元素添加统一但起始时间错开的 CSS 动画(例如上下浮动效果)。一个常见误区是:先批量创建所有图片、再用 querySelectorAll('.bobbing-photo').forEach(...) 统一赋值——这不仅冗余,更因 DOM 尚未完全挂载或类名未及时生效,导致动画延迟失效或全部同步触发。

✅ 正确做法是:在创建每个 为每个动态生成的图片元素应用独立的 CSS 动画延迟 元素的瞬间,立即为其设置唯一的 animationDelay。这样既保证逻辑内聚,又规避 DOM 查询开销与时机问题。

以下是一个优化后的 generateImages() 实现示例:

function generateImages(text) {
  const imageOutput = document.getElementById('imageOutput');
  imageOutput.innerHTML = ''; // 清空旧内容

  for (let i = 0; i < text.length; i++) {
    const char = text[i].toUpperCase();
    let element;

    if (char === '\n') {
      element = document.createElement('br');
    } else if (char === ' ') {
      element = document.createElement('img');
      element.src = 'FONT/SPACE.png';
    } else {
      element = document.createElement('img');
      element.src = `FONT/${char}.png`;
      element.classList.add('bobbing-photo');

      // ✅ 关键:此处直接设置随机延迟(单位:秒)
      const randomDelay = Math.random() * 2;
      element.style.animationDelay = `${-randomDelay}s`; // 负值可实现“提前启动”视觉错觉
    }

    imageOutput.append(element);
  }
}

// 实时响应输入
const userInput = document.getElementById('userInput');
userInput.addEventListener('input', () => {
  generateImages(userInput.value);
});

? 注意事项与增强建议

立即学习前端免费学习笔记(深入)”;

  • 负延迟值(-randomDelay + "s"):CSS 支持负的 animation-delay,表示动画从指定时间点“倒播”开始,能制造更自然的异步入场感,尤其适用于循环动画(如 infinite 的 bobbing)。

    蛙蛙写作——超级AI智能写作助手
    蛙蛙写作——超级AI智能写作助手

    蛙蛙写作辅助AI写文,帮助获取创意灵感,提供拆书、小说转剧本、视频生成等功能,是一款功能全面的AI智能写作工具。

    下载
  • 避免重复 class 操作:无需预先给所有 为每个动态生成的图片元素应用独立的 CSS 动画延迟 加 class 再统一查询——动态创建时即刻标记并配置,语义清晰、性能更优。

  • SVG 替代方案(进阶):若字体图片资源缺失或需动态生成,可用内联 SVG 转 Data URL(见答案中 generateTextSvg() 示例),提升兼容性与灵活性。

  • CSS 动画基础

    .bobbing-photo {
      position: relative;
      animation: bobbing 0.3s infinite alternate ease-in-out;
    }
    
    @keyframes bobbing {
      from { top: 0; }
      to   { top: -0.5em; }
    }

    注意 position: relative 是 top 生效的前提;alternate 实现往返浮动,ease-in-out 让运动更柔和。

? 总结:动画控制应“就近赋值”——在元素诞生之时完成个性化样式配置,而非事后补救。这种模式适用于任何动态 DOM 场景(如列表渲染、卡片生成、粒子系统),是提升前端动画表现力与代码健壮性的关键实践。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

266

2025.12.04

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

870

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

30

2025.12.06

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

4328

2024.08.14

CSS position定位有几种方式
CSS position定位有几种方式

有4种,分别是静态定位、相对定位、绝对定位和固定定位。更多关于CSS position定位有几种方式的内容,可以访问下面的文章。

83

2023.11.23

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

22

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

48

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

93

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

216

2026.03.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号