H5 中怎么用关键帧实现金币或积分掉落时的随机飘落与旋转轨迹

阿萱小哥_1133

阿萱小哥_1133

2026-09-19

996人浏览

原创

h5金币飘落效果需js动态创建元素并设置随机css变量(如--tx、--rot、animation-duration),配合@keyframes fall-spin实现位移、旋转、透明度变化,用cubic-bezier优化运动曲线,动画结束自动移除元素。

h5 中怎么用关键帧实现金币或积分掉落时的随机飘落与旋转轨迹

在 H5 中实现金币或积分掉落时的随机飘落与旋转效果,核心是用 CSS @keyframes 配合动态生成的动画属性(如不同 transformopacityanimation-duration 等),再结合 JavaScript 控制每个元素的随机参数。纯 CSS 无法生成真正随机值,所以需 JS 动态写入样式或设置内联动画属性。

1. 用 JS 动态创建带随机参数的金币元素

每次触发掉落(比如点击、结算完成),用 JS 创建一个 <div class="coin"> 元素,并为其设置唯一且随机的动画参数:<ul> <li> <strong>水平偏移</strong>:用 <code>Math.random() * 100 - 50 生成 -50px ~ +50px 的 left 值(相对于容器)

  • 下落时长:用 1.2 + Math.random() * 1.5 得到 1.2s ~ 2.7s 的 animation-duration
  • 旋转角度:用 Math.random() * 720 - 360 实现 ±2 圈的随机旋转(配合 rotate()
  • 缩放/透明度变化:可加入 scale(0.8) → scale(1.2) → scale(1)opacity: 0 → 1 → 0.8 模拟轻盈感
  • 2. 定义基础关键帧动画(支持变量注入)

    写一个通用的 @keyframes fall-spin,覆盖位移、旋转、透明度变化。注意用 transform 合并操作提升性能:

    @keyframes fall-spin {
      0% {
        transform: translateY(-20px) translateX(0) rotate(0deg) scale(0.7);
        opacity: 0;
      }
      30% {
        opacity: 1;
      }
      70% {
        transform: translateY(70vh) translateX(var(--tx, 0px)) rotate(var(--rot, 0deg));
      }
      100% {
        transform: translateY(85vh) translateX(var(--tx, 0px)) rotate(var(--rot, 0deg)) scale(0.95);
        opacity: 0.8;
      }
    }

    ⚠️ 注意:var(--tx)var(--rot) 是 CSS 自定义属性,需通过 JS 设置到元素上(见下一步)。

    html-ppt-to-pdf
    html-ppt-to-pdf

    将使用 `

    ` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。

    下载

    3. JS 注入随机 CSS 变量并启动动画

    为每个金币元素设置内联 CSS 变量和动画属性:

    const coin = document.createElement('div');
    coin.className = 'coin';
    const tx = (Math.random() * 100 - 50) + 'px'; // 水平抖动
    const rot = (Math.random() * 720 - 360) + 'deg';
    const dur = (1.2 + Math.random() * 1.5) + 's';
    <p>coin.style.setProperty('--tx', tx);
    coin.style.setProperty('--rot', rot);
    coin.style.animation = <code>fall-spin ${dur} cubic-bezier(0.22, 0.61, 0.36, 1) forwards</code>;</p><p>document.body.appendChild(coin);
    // 动画结束后自动移除元素
    coin.addEventListener('animationend', () => coin.remove());</p>

    使用 cubic-bezier(0.22, 0.61, 0.36, 1) 让下落先缓后急再略回弹,更自然;forwards 保证结束时保留最终样式。

    4. 优化细节提升真实感

    • 添加轻微晃动:在关键帧中插入 translateX(calc(var(--tx) * sin(1.5turn))) 类似逻辑(需配合 JS 计算或用 offset-path + motion-path,但兼容性略低)
    • 多金币错峰出发:用 setTimeout 给连续金币加 0.1~0.3s 延迟,避免堆叠
    • 限制最大并发数:防止页面卡顿,例如同时最多显示 8 个金币,旧的未结束就跳过或合并
    • 适配移动端:用 vh 而非 px 定义垂直距离,确保不同屏幕高度下都掉出视口

    不复杂但容易忽略:动画元素建议用 position: fixedabsolute 脱离文档流,避免影响布局;金币图片用 will-change: transform 或启用 GPU 加速(transform: translateZ(0))可进一步提升流畅度。

    相关文章

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    html

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

    相关专题

    更多
    python是前端还是后端
    python是前端还是后端

    Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.11

    2003

    5

    前端如何实现即时通讯
    前端如何实现即时通讯

    实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

    2023.10.09

    4263

    6

    前端和后端的区别
    前端和后端的区别

    前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

    2024.03.19

    5370

    13

    php和前端的关联介绍
    php和前端的关联介绍

    php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

    2024.03.22

    4818

    10

    前端外包工作内容有哪些
    前端外包工作内容有哪些

    前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

    2024.05.22

    683

    5

    html5动画制作有哪些制作方法
    html5动画制作有哪些制作方法

    html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

    2023.10.23

    3371

    6

    HTML与HTML5的区别
    HTML与HTML5的区别

    HTML与HTML5的区别:1、html5支持矢量图形,html本身不支持;2、html5中可临时存储数据,html不行;3、html5新增了许多控件;4、html本身不支持音频和视频,html5支持;5、html无法处理不准确的语法,html5能够处理等等。想了解更多HTML与HTML5的相关内容,可以阅读本专题下面的文章。

    2024.03.06

    5508

    6

    html5从入门到精通汇总
    html5从入门到精通汇总

    想系统掌握HTML5开发?本合集精选全网优质学习资源,涵盖免费教程、实战项目、视频课程与权威电子书,从基础语法到高级特性(Canvas、本地存储、响应式布局等)一应俱全,适合零基础小白到进阶开发者,助你高效入门并精通HTML5前端开发。

    2025.12.30

    734

    19

    html5新老标签汇总
    html5新老标签汇总

    HTML5在2026年持续优化网页语义化与交互体验,不仅引入了如<header>、<nav>、<article>、<section>、<aside>、<footer>等结构化标签,还新增了<video>、<audio>、<canvas>、<figure>、<time>、<mark>等增强多媒体与

    2025.12.30

    614

    12

    热门下载

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

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    GDB 17.2 官方文档集合
    GDB 17.2 官方文档集合

    共0课时 | 0人学习

    Bootstrap 入门安装配置
    Bootstrap 入门安装配置

    共0课时 | 0人学习

    38+ PhpStorm 提示和技巧
    38+ PhpStorm 提示和技巧

    共1课时 | 200人学习