HTML做成一个粒子漩涡特效页面

ops/2024/10/18 5:42:01/

大家好,今天制作制作一个粒子漩涡特效的页面!

先看具体效果:
在这里插入图片描述
要在一个单一的 index.html 页面中实现粒子漩涡特效,我们可以使用HTML、CSS和JavaScript(不需要外部库)。下面是一个简单的例子,展示了如何使用纯HTML和JavaScript来创建一个基本的粒子漩涡效果:

html"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>粒子漩涡特效</title>
<style>css">body {margin: 0;overflow: hidden;background-color: #000;}canvas {display: block;position: absolute;top: 0;left: 0;}
</style>
</head>
<body>
<canvas id="particles"></canvas><script>const canvas = document.getElementById('particles');const ctx = canvas.getContext('2d');const particles = [];const particleCount = 200;const speed = 2;let centerX, centerY;// 初始化画布大小function resizeCanvas() {canvas.width = window.innerWidth;canvas.height = window.innerHeight;centerX = canvas.width / 2;centerY = canvas.height / 2;}// 初始化粒子function initParticles() {for (let i = 0; i < particleCount; i++) {particles.push({x: Math.random() * canvas.width,y: Math.random() * canvas.height,size: Math.random() * 2 + 1,speedX: (Math.random() - 0.5) * 2,speedY: (Math.random() - 0.5) * 2,targetX: centerX,targetY: centerY,});}}// 更新粒子位置function updateParticles() {for (let i = 0; i < particles.length; i++) {const particle = particles[i];// 靠近漩涡中心particle.targetX = centerX + (Math.sin(i / 5 + Date.now() * 0.001) * 100);particle.targetY = centerY + (Math.cos(i / 7 - Date.now() * 0.001) * 100);// 吸引粒子到漩涡中心const angle = Math.atan2(particle.y - centerY, particle.x - centerX);const distance = Math.sqrt(Math.pow(particle.x - centerX, 2) + Math.pow(particle.y - centerY, 2));particle.speedX += (Math.cos(angle) / distance * 0.01) * (speed - particle.size);particle.speedY += (Math.sin(angle) / distance * 0.01) * (speed - particle.size);// 更新位置particle.x += particle.speedX;particle.y += particle.speedY;// 边界检测if (particle.x < 0) particle.x = canvas.width;if (particle.y < 0) particle.y = canvas.height;if (particle.x > canvas.width) particle.x = 0;if (particle.y > canvas.height) particle.y = 0;}}// 绘制粒子function drawParticles() {ctx.clearRect(0, 0, canvas.width, canvas.height);ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';for (let i = 0; i < particles.length; i++) {const particle = particles[i];ctx.beginPath();ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);ctx.fill();}}// 动画循环function animate() {requestAnimationFrame(animate);updateParticles();drawParticles();}// 初始化resizeCanvas();initParticles();animate();// 监听窗口大小变化window.addEventListener('resize', resizeCanvas);
</script>
</body>
</html>

这段代码定义了一个粒子系统,每个粒子都有位置、大小、速度和目标位置。在updateParticles函数中,我们根据粒子与漩涡中心的角度和距离来计算吸引力,并更新粒子的速度和位置。drawParticles函数负责在画布上绘制粒子。animate函数是动画循环,它会在每个帧中更新和绘制粒子。

注意:这个简单的例子没有实现复杂的漩涡效果和高级图形渲染,但它提供了一个基础的粒子系统,可以根据需要进行扩展和优化。


http://www.ppmy.cn/ops/48713.html

相关文章

es6基础语法

简介 ECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准 let const 声明变量的关键字 es6 之前使用var es6 引入let const 特点 没有变量提升 不能在未声明之前使用形成块作用域 声明的变量只在当前它所在的代码块有效,可以使用不可重复…

通勤路上的美好伴侣:倍思H1s头戴式蓝牙耳机

在繁忙的都市生活中,通勤往往占据了人们大量的时间。而在这个过程中,无尽的嘈杂声——公交车的播报声、地铁的轰鸣声、街头的喧嚣——往往成为我们心情的干扰源。在这样的环境下,一款优质的头戴式蓝牙耳机,会让我们的通勤之旅变得更加愉快和舒适。 通勤路上要更舒适—— 倍思…

爬虫的法律风险是什么?以及合法使用爬虫技术的建议。

爬虫的法律风险是什么&#xff1f; 网络爬虫技术&#xff0c;虽然在数据获取方面具有巨大优势&#xff0c;但其使用过程中可能引发的法律风险也不容忽视。这些风险主要包括违反数据保护法规、侵犯知识产权、构成不正当竞争等。下面将详细探讨网络爬虫的法律风险&#xff0c;并在…

6.11 作业

以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有一位讲解员&…

WPF第三方开源UI框架:打造独特体验的魔法师

引言 在WPF&#xff08;Windows Presentation Foundation&#xff09;的世界中&#xff0c;除了微软提供的原生控件&#xff0c;还有许多第三方开源UI框架为开发者提供了更广阔的天地。这些框架以其创新和灵活性&#xff0c;帮助开发者打造出与众不同的用户体验。本文将带您走进…

孪生网络(Siamese Networks)和对比学习(Contrastive Learning)

目录 孪生网络&#xff08;Siamese Networks&#xff09; 对比学习&#xff08;Contrastive Learning&#xff09; 区别 SimCLR (A Simple Framework for Contrastive Learning of Visual Representations) MoCo (Momentum Contrast for Unsupervised Visual Representati…

现代密码学-国密算法

商用密码算法种类 商用密码算法 密码学概念、协议与算法之间的依赖关系 数字签名、证书-公钥密码、散列类算法 消息验证码-对称密码 &#xff0c;散列类 安全目标与算法之间的关系 机密性--对称密码、公钥密码 完整性--散列类算法 可用性--散列类、公钥密码 真实性--公…

2024050802-重学 Java 设计模式《实战模板模式》

重学 Java 设计模式&#xff1a;实战模版模式「模拟爬虫各类电商商品&#xff0c;生成营销推广海报场景」 一、前言 黎明前的坚守&#xff0c;的住吗&#xff1f; 有人举过这样一个例子&#xff0c;先给你张北大的录取通知书&#xff0c;但要求你每天5点起床&#xff0c;12点…