效果:

代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>动态香烛效果</title><script src="https://cdn.tailwindcss.com"></script><link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet"><!-- 配置Tailwind自定义颜色和工具类 --><script>tailwind.config = {theme: {extend: {colors: {incense: {wood: '#e6c8a0',ash: '#d9d9d9',flame: '#ff6b35',glow: '#ffb74d',smoke: '#f0f0f0'}}}}}</script><style type="text/tailwindcss">@layer utilities {.incense-shadow {box-shadow: inset -2px 0 3px rgba(0,0,0,0.1), inset 2px 0 3px rgba(255,255,255,0.7);}.flame-animation {animation: flicker 1s infinite alternate;}.smoke-animation {animation: rise 4s infinite linear;}}@keyframes flicker {0% { transform: scale(1, 1); opacity: 0.9; }50% { transform: scale(1.1, 1.2); opacity: 1; }100% { transform: scale(0.9, 1); opacity: 0.85; }}@keyframes rise {0% { transform: translateY(0) scale(0.8); opacity: 0.6; }50% { transform: translateY(-20px) scale(1); opacity: 0.3; }100% { transform: translateY(-40px) scale(1.2); opacity: 0; }}</style>
</head>
<body class="bg-gray-100 min-h-screen flex items-center justify-center p-4"><div class="text-center"><h1 class="text-3xl font-bold mb-8 text-gray-800">动态香烛效果</h1><!-- 香烛容器 --><div class="relative h-[400px] flex justify-center items-end mb-12"><!-- 香炉 --><div class="w-24 h-8 bg-gray-300 rounded-full mb-1 shadow-md flex items-center justify-center"><div class="w-16 h-1 bg-gray-400 rounded-full"></div></div><!-- 香烛主体 --><div id="incense-stick" class="absolute bottom-[40px] w-2 bg-incense-wood rounded-t-full incense-shadow transition-all duration-500 ease-out" style="height: 300px;"><!-- 香烛顶部燃烧部分 --><div class="w-full h-4 bg-incense-flame rounded-full flame-animation relative"><!-- 火星 --><div class="absolute -top-1 -right-1 w-2 h-2 bg-incense-glow rounded-full flame-animation"></div><!-- 烟雾 --><div class="smoke-container absolute -top-10 left-1/2 transform -translate-x-1/2 w-4 h-4"><div class="smoke smoke-animation absolute w-3 h-3 bg-incense-smoke rounded-full"></div><div class="smoke smoke-animation absolute w-4 h-4 bg-incense-smoke rounded-full" style="animation-delay: 1s; left: -2px;"></div><div class="smoke smoke-animation absolute w-2 h-2 bg-incense-smoke rounded-full" style="animation-delay: 2s; left: 2px;"></div></div></div><!-- 香烛纹理 --><div class="w-full h-full relative"><div class="absolute top-10 w-full h-1 bg-incense-ash/70"></div><div class="absolute top-40 w-full h-1 bg-incense-ash/50"></div><div class="absolute top-80 w-full h-1 bg-incense-ash/60"></div><div class="absolute top-130 w-full h-1 bg-incense-ash/40"></div><div class="absolute top-190 w-full h-1 bg-incense-ash/70"></div><div class="absolute top-250 w-full h-1 bg-incense-ash/50"></div></div></div></div><!-- 控制面板 --><div class="bg-white p-6 rounded-lg shadow-lg max-w-md mx-auto"><h2 class="text-xl font-semibold mb-4 text-gray-700">调整香的长度</h2><div class="mb-6"><label for="incense-length" class="block text-gray-600 mb-2">香长度: <span id="length-value">300</span>px</label><input type="range" id="incense-length" min="50" max="350" value="300" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-amber-600"></div><div class="flex gap-3 justify-center"><button id="shorten-btn" class="px-4 py-2 bg-amber-600 text-white rounded hover:bg-amber-700 transition"><i class="fa fa-fire mr-1"></i> 燃烧变短</button><button id="reset-btn" class="px-4 py-2 bg-gray-600 text-white rounded hover:bg-gray-700 transition"><i class="fa fa-refresh mr-1"></i> 重置</button></div></div></div><script>// 获取DOM元素const incenseStick = document.getElementById('incense-stick');const lengthSlider = document.getElementById('incense-length');const lengthValue = document.getElementById('length-value');const shortenBtn = document.getElementById('shorten-btn');const resetBtn = document.getElementById('reset-btn');// 初始长度let currentLength = 300;// 更新香的长度function updateIncenseLength(length) {if (length < 50) length = 50; // 最小长度限制if (length > 350) length = 350; // 最大长度限制currentLength = length;incenseStick.style.height = `${currentLength}px`;lengthValue.textContent = currentLength;lengthSlider.value = currentLength;}// 滑块控制lengthSlider.addEventListener('input', (e) => {updateIncenseLength(parseInt(e.target.value));});// 燃烧变短按钮shortenBtn.addEventListener('click', () => {// 每次点击缩短30pxupdateIncenseLength(currentLength - 30);// 添加燃烧的视觉反馈incenseStick.classList.add('scale-95');setTimeout(() => {incenseStick.classList.remove('scale-95');}, 200);});// 重置按钮resetBtn.addEventListener('click', () => {updateIncenseLength(300);});// 自动燃烧效果 - 每5秒自动缩短一点setInterval(() => {updateIncenseLength(currentLength - 5);}, 5000);</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/89079.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89079.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/89079.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件产品的技术资料管控是确保研发可追溯、生产可复制、质量可控制的核心环节。

硬件产品的技术资料管控是确保研发可追溯、生产可复制、质量可控制的核心环节。以下针对BOM单、PCB文件、程序代码、原理图四大核心要素&#xff0c;结合行业实践提出管控方向划分及优化策略&#xff1a;&#x1f4cb; 一、硬件BOM单的精细化管控方向BOM单是硬件生产的“配方表…

Uniswap V2/V3/V4简短说明

Uniswap 是以太坊上最知名的去中心化交易所&#xff08;DEX&#xff09;&#xff0c;它通过不同的版本&#xff08;V2、V3、V4&#xff09;不断改进&#xff0c;变得更高效、更灵活。以下是用通俗易懂的方式介绍它们之间的异同&#xff1a; Uniswap V2&#xff1a;基础版&#…

C++面向对象创建打印算术表达式树

C面向对象&#xff0c;实现算术表达式树的创建和打印的案例&#xff0c;来源于《C沉思录》第八章&#xff0c;涉及数据抽象、继承、多态&#xff08;动态绑定&#xff09;、句柄&#xff0c;其中句柄的使用是核心&#xff0c;关于句柄的较为简单的文章链接点击这里&#xff0c;…

力扣每日一题--2025.7.16

&#x1f4da; 力扣每日一题–2025.7.16 &#x1f4da; 3201. 找出有效子序列的最大长度 I&#xff08;中等&#xff09; 今天我们要解决的是力扣上的第 3201 题——找出有效子序列的最大长度 I。这道题虽然标记为中等难度&#xff0c;但只要掌握了正确的思路&#xff0c;就能…

SFT:大型语言模型专业化定制的核心技术体系——原理、创新与应用全景

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 以下基于权威期刊、会议论文及技术报告&#xff0c;对监督微调&#x…

若依前后端分离框架配置多数据库表

若依前后端分离框架配置多数据库表1、配置application.yml2、注释掉application-druid.yml中的数据库3、在DataSourceType 中添加新增的数据库来源4、配置DruidConfig文件4、1新增注入方法&#xff0c;在DataSourceType类添加数据源枚举4、2在DruidConfig类dataSource方法添加数…

29.安卓逆向2-frida hook技术-逆向os文件(二)IDA工具下载和使用(利用ai分析so代码)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

[析]Deep reinforcement learning for drone navigation using sensor data

Deep reinforcement learning for drone navigation using sensor data 基于传感器数据的无人机导航深度强化学习方法 评价&#xff1a;MDP无记忆性&#xff0c;使用LSTM补足缺点。PPO解决新旧策略差距大的问题。 对于环境中的障碍物&#xff0c;设置增量课程&#xff0c;障碍…

SpringBoot项目启动报:java: 找不到符号 符号: 变量 log 的解决办法

问题&#xff1a;使用IDEA创建SpringBoot项目&#xff0c;在项目中使用 Slf4j 注解引入log日志后&#xff0c;启动项目&#xff0c;报如下错误&#xff1a;原因&#xff1a;网上找了很多博文&#xff0c;说是lombook依赖没有引入&#xff0c;但是我的pom.xml中已经引入 lombook…

HTML基础知识 二(创建容器和表格)

HTML 基础知识&#xff1a;创建容器和表格&#xff08;补充版&#xff09;HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础。容器元素用于组织内容&#xff0c;表格用于展示结构化数据&#xff0c;两者都是网页设计中不可或缺的部分。一、HTML 容器元素容器元素就…

多目标优化|HKELM混合核极限学习机+NSGAII算法工艺参数优化、工程设计优化,四目标(最大化输出y1、最小化输出y2,y3,y4),Matlab完整源码

基本介绍 1.HKELM混合核极限学习机NSGAII多目标优化算法&#xff0c;工艺参数优化、工程设计优化&#xff01;&#xff08;Matlab完整源码和数据&#xff09; 多目标优化是指在优化问题中同时考虑多个目标的优化过程。在多目标优化中&#xff0c;通常存在多个冲突的目标&#x…

【AI智能体】Dify 基于知识库搭建智能客服问答应用详解

目录 一、前言 二、Dify 介绍 2.1 Dify 核心特点 三、AI智能体构建智能客服系统介绍 3.1 基于AI智能体平台搭建智能客服系统流程 3.1.1 需求分析与场景设计 3.1.2 选择合适的AI智能体平台 3.1.3 工作流编排与调试 3.1.4 系统集成与发布 3.2 使用AI智能体构建智能客服系…

事务~~~

1、四大特性&#xff1a;A 原子性&#xff1a;对数据的一组操作&#xff0c;要么执行成功&#xff0c;要么不执行C 一致性&#xff1a;事务前后的状态要保持一致&#xff0c;可以理解为数据的一致性I 隔离性&#xff1a;多个事务之间是隔离的&#xff0c;互不影响D 持久性&…

【Linux编译】./build.sh: line 17: $‘\r‘: command not found

文章目录0.运行编译脚本遇到问题&#xff1a;方法 1&#xff1a;使用 dos2unix&#xff08;推荐&#xff09;1. 安装 dos2unix2. 递归转换整个目录方法 2&#xff1a;使用 sed&#xff08;无需安装额外工具&#xff09;方法 3&#xff1a;使用 tr&#xff08;仅单文件&#xff…

Weblogic历史漏洞利用

文章目录漏洞介绍WebLogic 漏洞概述历史漏洞利用弱口令CVE-2014-4210CVE-2018-2894CVE-2019-2725CVE-2020-14882漏洞介绍 Oracle WebLogic Server 是一个用于开发和部署企业级 Java 应用的服务器平台&#xff0c;但其历史上存在多个严重漏洞&#xff0c;尤其以远程代码执行&am…

[Rust 基础课程]使用 Cargo 创建 Hello World 项目

Cargo&#xff08;https://crates.io/&#xff09; 是 Rust 语言中最常用的构建工具和包管理工具&#xff0c;我们看看怎么通过 Cargo 创建一个 Hello World 项目并运行。 :::warning 通过官方的 Rust 安装方式安装 Rust&#xff0c;Cargo 是同时默认安装好的了 ::: 首先&am…

C语言 --- 函数递归

函数递归一、什么是函数递归二、函数递归的要点三、示例1.计算n的阶乘2.提取一个任意正整数的所有位数&#xff0c;按顺序排列3.获取第n个斐波那契数&#xff0c;最开始的两个数是1&#xff0c;1四、总结一、什么是函数递归 函数递归是一种解决问题的思想&#xff0c;是将一个…

GitHub 趋势日报 (2025年07月14日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图1916claude-code795the-book-of-secret-knowledge728free-for-dev547markitdown367…

PyTorch中张量(TensorFlow)操作方法和属性汇总详解和代码示例

1、张量的操作汇总 下面是 PyTorch 中常见的 张量操作方法汇总&#xff0c;包括 创建、索引、变换、数学运算、广播机制、维度操作 等内容&#xff0c;并附上详解和代码示例&#xff0c;便于系统学习与实战参考。一、张量创建&#xff08;torch.tensor 等&#xff09; import t…

统一日志格式规范与 Filebeat+Logstash 实践落地

背景 在多部门、多技术栈并存的企业环境中&#xff0c;日志收集与分析是保障系统稳定运行的核心能力之一。然而&#xff0c;不同开发团队采用各异的日志打印方式&#xff0c;导致日志数据结构混乱&#xff0c;严重影响后续的收集、存储、检索与告警效率。 比如我们大部门就有多…