Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >❤️创意网页:创意视觉效果粒子循环的网页动画

❤️创意网页:创意视觉效果粒子循环的网页动画

作者头像
命运之光
发布于 2024-03-20 04:43:42
发布于 2024-03-20 04:43:42
24200
代码可运行
举报
运行总次数:0
代码可运行

介绍

在这篇技术博客中,我们将学习如何使用HTML5 Canvas和JavaScript创建一个视觉效果震撼的网页动画。我们将绘制一组随机颜色和运动的粒子,通过鼠标的移动产生交互效果,营造出一个令人惊叹的视觉效果。本项目将为您展示如何利用Canvas绘制动态粒子效果,并实现鼠标交互效果的加持。

动态图展示

准备工作

在开始之前,请确保您已经具备以下条件:

  • 基本的HTML、CSS和JavaScript知识。
  • 一个支持HTML5的现代web浏览器(推荐使用最新版本的Chrome、Firefox、Safari等)。

HTML 结构

首先,让我们创建一个HTML文件,并添加必要的结构。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
    <title>视觉效果震撼的网页</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script>
        // JavaScript代码将在下面添加
    </script>
</body>
</html>

在这个HTML结构中,我们定义了一个Canvas元素,用于绘制我们的视觉效果震撼的网页动画。


JavaScript 代码

现在,让我们添加JavaScript代码来实现这个视觉效果震撼的网页动画。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- ... 上面的HTML代码 ... -->

<script>
    const canvas = document.getElementById("canvas");
    const ctx = canvas.getContext("2d");
    let mouseX = 0;
    let mouseY = 0;

    // 设置画布大小
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;

    window.addEventListener("mousemove", (e) => {
        mouseX = e.clientX;
        mouseY = e.clientY;
    });

    class Particle {
        constructor(x, y, color) {
            this.x = x;
            this.y = y;
            this.color = color;
            this.radius = Math.random() * 2 + 1;
            this.angleX = Math.random() * 6;
            this.angleY = Math.random() * 6;
        }

        update() {
            this.x += Math.sin(this.angleX) * 2;
            this.y += Math.sin(this.angleY) * 2;
            this.angleX += 0.01;
            this.angleY += 0.01;
        }

        draw() {
            ctx.fillStyle = this.color;
            ctx.beginPath();
            ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
            ctx.fill();
        }
    }

    const particles = [];

    function createParticles() {
        for (let i = 0; i < 100; i++) {
            const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
            const particle = new Particle(canvas.width / 2, canvas.height / 2, color);
            particles.push(particle);
        }
    }

    function animate() {
        requestAnimationFrame(animate);
        ctx.fillStyle = "rgba(0, 0, 0, 0.1)";
        ctx.fillRect(0, 0, canvas.width, canvas.height);

        for (let i = 0; i < particles.length; i++) {
            particles[i].update();
            particles[i].draw();
        }
    }

    createParticles();
    animate();
</script>
</body>
</html>

以上代码中,我们创建了一个Particle类来表示每个粒子。每个粒子都有其位置、颜色、大小和运动角度。我们监听鼠标移动事件,获取鼠标的坐标,然后通过粒子的位置和角度更新实现交互效果。最后,我们使用Canvas绘制了动态的粒子效果。


运行效果

将上述HTML代码保存为一个HTML文件,并在支持HTML5的现代web浏览器中打开它。您将会看到一个视觉效果震撼的网页动画,许多随机颜色和运动的粒子在画布上自由运动,并随着鼠标的移动而产生交互效果。


完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
    <title>❤️创意网页:创意视觉效果粒子循环的网页动画</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>

    <script>
        const canvas = document.getElementById("canvas");
        const ctx = canvas.getContext("2d");
        let mouseX = 0;
        let mouseY = 0;

        // 设置画布大小
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        window.addEventListener("mousemove", (e) => {
            mouseX = e.clientX;
            mouseY = e.clientY;
        });

        class Particle {
            constructor(x, y, color) {
                this.x = x;
                this.y = y;
                this.color = color;
                this.radius = Math.random() * 2 + 1;
                this.angleX = Math.random() * 6;
                this.angleY = Math.random() * 6;
            }

            update() {
                this.x += Math.sin(this.angleX) * 2;
                this.y += Math.sin(this.angleY) * 2;
                this.angleX += 0.01;
                this.angleY += 0.01;
            }

            draw() {
                ctx.fillStyle = this.color;
                ctx.beginPath();
                ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
                ctx.fill();
            }
        }

        const particles = [];

        function createParticles() {
            for (let i = 0; i < 100; i++) {
                const color = `hsl(${Math.random() * 360}, 100%, 50%)`;
                const particle = new Particle(canvas.width / 2, canvas.height / 2, color);
                particles.push(particle);
            }
        }

        function animate() {
            requestAnimationFrame(animate);
            ctx.fillStyle = "rgba(0, 0, 0, 0.1)";
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            for (let i = 0; i < particles.length; i++) {
                particles[i].update();
                particles[i].draw();
            }
        }

        createParticles();
        animate();
    </script>
</body>
</html>

代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本
🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可
🍓3.打开html文件(大功告成(●'◡'●))

总结

在本篇博客中,我们学习了如何使用HTML5 Canvas和JavaScript创建一个视觉效果震撼的网页动画。通过绘制动态粒子效果,并添加鼠标交互效果,我们成功地打造了一个令人惊叹的视觉效果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
干货 | 运筹学、数学规划、离散优化求解器大PK,总有一款适合你
CPLEX 是IBM公司的一个优化引擎。软件IBM ILOG CPLEX Optimization Studio中自带该优化引擎。该软件具有执行速度快、其自带的语言简单易懂、并且与众多优化软件及语言兼容(与C++,JAVA,EXCEL,Matlab等都有接口),因此在西方国家应用十分广泛。由于在中国还刚刚全面推广不久,因此应用还不是很广,但是发展空间很大。
用户1621951
2019/10/18
27.6K2
干货 | 运筹学、数学规划、离散优化求解器大PK,总有一款适合你
MOSEK,一个专注而卓越的优化求解器(一)
MOSEK是由丹麦MOSEK ApS公司开发的一款数学优化求解器,也是公认的求解二次规划、二阶锥规划和半正定规划问题最快的求解器之一,广泛应用于金融、保险、能源等领域。杉数科技是MOSEK在中国大陆唯一官方授权销售商,承担中国市场的销售和售后服务工作。本篇主要介绍MOSEK的总体性能,在金融中一些解决问题的技巧和应用,杉数科技将和艾悉资产在近期推出一个介绍性文档,敬请关注!(详情请登陆 https://www.shanshu.ai/product/mosek)
用户1621951
2019/10/18
8.4K0
MOSEK,一个专注而卓越的优化求解器(一)
matlab是fmincon,matlab中fmincon
标签: fmincon| MATLAB非线性优化fmincon_数学_自然科学_专业资料。MATLAB非线性优化函数fmincon的详细整理 active-set and sqp algorithms 不接受用户提供的海塞矩阵……
全栈程序员站长
2022/08/12
2.1K0
拓端tecdat|R语言投资组合优化求解器:条件约束最优化、非线性规划求解
全局优化与局部优化的理念完全不同(全局优化求解器通常被称为随机求解器,试图避免局部最优点)。
拓端
2021/06/29
1.6K0
整数规划精确算法/近似算法/(元)启发算法/神经网络反向传播等算法的区别与关联
作者:作者:@留德华叫兽 美国克莱姆森大学数学硕士(运筹学方向)、Ph.D. Candidate,欧盟玛丽居里学者,德国海德堡大学数学博士(离散优化、图像处理方向),期间前往意大利博洛尼亚大学、IBM实习半年,巴黎综合理工访问一季。现任德国某汽车集团无人驾驶部门计算机视觉研发工程师。
Piper蛋窝
2020/12/14
2.1K0
整数规划精确算法/近似算法/(元)启发算法/神经网络反向传播等算法的区别与关联
【数学建模】【优化算法】:【MATLAB】从【一维搜索】到】非线性方程】求解的综合解析
算法简介: 黄金分割法是一种用于一维搜索问题的优化算法,特别适用于无导数信息的目标函数。通过利用黄金分割比(φ ≈ 0.618),该算法逐步缩小搜索区间,以快速逼近极值点。黄金分割法在优化问题中具有高效性和稳健性,特别适用于目标函数光滑但无导数信息的情况。
小李很执着
2024/08/05
4040
【数学建模】【优化算法】:【MATLAB】从【一维搜索】到】非线性方程】求解的综合解析
数学建模软件工具详解(附安装下载教程
工欲善其事必先利其器,在数学建模竞赛和研究中,选择合适的软件工具对提高建模效率和结果呈现质量至关重要。本文将系统地介绍数学建模中常用的核心软件工具,帮助建模爱好者和参赛者构建一个完整的软件工具链。简单介绍一下我自己:博主专注建模五年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。
fanstuck
2024/12/26
4490
数学建模软件工具详解(附安装下载教程
MATLAB中的优化工具箱解决工程问题的高效方法
优化是工程和科学研究中的重要环节。MATLAB提供了强大的优化工具箱,使得用户能够有效地解决各种优化问题。本文将介绍MATLAB中的优化工具箱,并通过实例演示如何使用该工具箱解决实际工程问题。
一键难忘
2025/01/25
5100
数值优化方法及MATLAB实现(一)
读者朋友大家好!我是过冷水,最近在学习的过程中遇到极值寻优问题,觉得寻优问题是很多人关注的一个知识点,于是就准备开一个新的连载和大家一起来解决极值寻优过程中遇到的问题。
巴山学长
2019/07/15
2.8K0
数值优化方法及MATLAB实现(一)
【CPLEX教程01】Cplex介绍,下载和安装Cplex
最近学习列生成算法,需要用到优化求解器。所以打算学习一下cplex这个商业求解器。
短短的路走走停停
2019/07/10
6.8K1
数学建模【三大模型+十大算法】
文章目录 前言 一、三大模型 1️⃣预测模型💖 2️⃣优化模型💗 3️⃣评价模型💝 二、十大算法 1️⃣蒙特卡罗算法🍂 2️⃣数据拟合、参数估计、插值等数据处理算法🍁 3️⃣线性规划、整数规划、多元规划、二次规划等规划类问题🥀 4️⃣图论算法🌺 5️⃣动态规划、回溯搜索、分治算法、分支定界🌹 6️⃣最优化理论的三大非经典算法🍧 7️⃣网格算法和穷举法🍓 8️⃣一些连续离散化方法🌷 9️⃣数值分析算法🥤 🔟图象处理算法🍬 ---- 前言 提示:文章为个人学习笔记备忘录 ---- 一、三大模型 1️⃣预测模
MIKE笔记
2023/03/22
7520
用于运筹学的 Wolfram 解决方案
使用结合了强大的计算、分析和动态报表生成功能的可随时部署、完全交互的模型来模拟您的流程;全部集中在一个系统中,并具有一个集成的工作流程。
WolframChina
2020/07/16
9160
干货 | cplex介绍、下载和安装以及java环境配置和API简单说明
最近学习列生成算法,需要用到优化求解器。所以打算学习一下cplex这个商业求解器。
用户1621951
2019/07/17
5.8K2
干货 | cplex介绍、下载和安装以及java环境配置和API简单说明
解决中国“卡脖子”问题:研究求解器的少数者
蔡少伟清晰地记得,2011年夏天他去美国密歇根大学安娜堡分校参加 SAT 会议时,一眼望去,全场只有他一个中国人。
AI科技评论
2021/09/16
3K0
基于求解器的路径规划算法实现及性能分析
社会智能化的发展趋势和日益多元化的实际需求,奠定了物流运输行业对于实现智能规划的需求,车辆路径规划问题是其中的重点研究对象。
用户1621951
2023/01/05
8.3K0
基于求解器的路径规划算法实现及性能分析
数学建模--整数规划和非线性规划
在数学建模中,整数规划和非线性规划是两种重要的优化方法,它们在实际应用中具有广泛的应用。
用户11315985
2024/10/16
5030
演讲 | 运筹学专家叶荫宇:在物流、零售与金融行业,优化算法如何改变决策方式?
机器之心整理 参与:杜夏德 运筹学的历史比 AI 和机器学习更悠久,但 AI 与机器学习又为它提供了一种机会,很多顶层的东西都是要靠优化,不管是学习还是刚才讲到的决策问题,都要有 OR (运筹学)的结合。 作为优化算法的基础,运筹学在第二次世界大战期间因英美两国配置资源的需求而发展起来。近些年,随着数据量大幅度攀升等科技环境的变化,运筹学得以快速发展,并广泛应用于零售、金融、物流等行业。正如运筹学顶级专家叶荫宇所说,运筹学的历史比 AI 和机器学习更悠久,但 AI 与机器学习又为它提供了一种机会,很多顶层的
机器之心
2018/05/09
2K0
演讲 | 运筹学专家叶荫宇:在物流、零售与金融行业,优化算法如何改变决策方式?
Lingo V18中文版电脑安装,Lingo优化求解软件下载安装教程
LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”的简称,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数(即整数规划,包括 0-1 整数规划),方便灵活,而且执行速度非常快。能方便与EXCEL,数据库等其他软件交换数据。LINGO18.0为最新版本。
用户10413399
2023/04/07
8580
Lingo V18中文版电脑安装,Lingo优化求解软件下载安装教程
matlab非线性整数优化,fmincon整数优化
MATLAB非线性优化fmincon_数学_自然科学_专业资料。精心整理 act…
全栈程序员站长
2022/08/23
1K0
锅炉温度dmc控制用simulink实现
在Simulink中实现锅炉温度的动态矩阵控制 (DMC) 是一个涉及建模、控制器设计和仿真的过程。DMC是模型预测控制 (MPC) 的一种形式,特别适用于具有显著纯滞后或非最小相位特性的过程(锅炉温度控制常符合这些特点)。
用户4006703
2025/06/23
550
推荐阅读
相关推荐
干货 | 运筹学、数学规划、离散优化求解器大PK,总有一款适合你
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验