js实现动态生成不固定数量的气泡

ops/2025/1/11 23:00:18/

样式:

核心代码:

1、添加气泡的方法

javascript">addCircle() {let height = 645;let width = 312;let minSize = 38;let maxSize = 78;let newCircle = {x: Math.random() * width, // 随机位置,留出边界y: Math.random() * height,size: (minSize + Math.random() * (maxSize - minSize + 1)) // 随机大小};// 检查超出边框,则重新生成if ((newCircle.x + newCircle.size * 2 > width) || (newCircle.y + newCircle.size * 2 > height)) {return this.addCircle();}// 检查重叠,如果重叠则重新生成let isOverlap = this.circles?.some(item => this.checkOverlap(newCircle, item));// 如果重叠,则重新生成新圆if (isOverlap) {return this.addCircle();}// 每次生成随机颜色let color = this.getRandomHslaColor();newCircle.color = color;this.circles.push(newCircle);
}

2、校验是否有重叠

javascript">checkOverlap(circle1, circle2) {// 简单的圆与圆的重叠检测let x1 = circle1.x + circle1.size;let x2 = circle2.x + circle2.size;let y1 = circle1.y + circle1.size;let y2 = circle2.y + circle2.size;const distance = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));// +10是为了留出边距return distance < circle1.size + circle2.size + 10;
}

3、生成随机颜色

javascript">getRandomHslaColor() {let h = Math.floor(Math.random() * 360);let s = Math.floor(Math.random() * 100) + '%';let l = Math.floor(Math.random() * 100) + '%';let a = Math.random().toFixed(2); // 生成0.00到1.00之间的透明度值return `hsla(${h},${s},${l},${a})`;
}


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

相关文章

怎么画实体关系图E-R?用这款在线绘图工具简单又好用!

ER图(Entity-Relationship Diagram&#xff0c;即实体-关系图)是一种用于数据库设计的图形化工具&#xff0c;用于描述现实世界的概念模型。它由Peter Chen于1976年首次提出&#xff0c;现已成为数据库建模和系统分析设计中最常用的工具之一。 ER图通过图形化的方式&#xff0…

Rancher 与 Kubernetes(K8s)的关系

1. 简介 1.1 Kubernetes 作为容器编排平台 Kubernetes 是一个开源平台&#xff0c;用于自动化部署、扩展和管理容器化的应用。它提供了容器调度、自动伸缩、健康检查、滚动更新等功能。 例子&#xff1a;假设您有一个微服务架构的应用程序&#xff0c;需要运行在多个节…

Linux基本

一、安装 &#xff08;一&#xff09;bios basic input / output system cpu虚拟化技术需要开启 intel amd 不同品牌进入bios快捷键不一样 &#xff08;二&#xff09;vmware 新建 配置硬件 硬盘 建议单个虚拟硬盘文件&#xff0c;比较好管理 r如果有转移的需求&#xff…

AgentScope 初体验

1 AgentScope 简介 1.1 什么是AgentScope&#xff1f; AgentScope是以开发者为中心的多智能体平台&#xff0c;它使开发者能够更轻松地构建基于大语言模型的多智能体应用程序。 特点&#xff1a; 易用性鲁棒性支持多模态数据分布式部署 1.2 关键概念 消息&#xff08;Mes…

TC、IXIA、C50等测试仪器

TC、IXIA、C50等测试仪器在各自的领域内都具有较高的专业性和广泛的应用。以下是对这些测试仪器的一般性描述&#xff1a; TC测定仪 TC测定仪&#xff08;通常也涉及TIC和TOC的测定&#xff09;主要用于分析样品中的总碳&#xff08;TC&#xff09;、总有机碳&#xff08;TOC&…

Guitar Pro 8.2中文解锁版下载及2024最新图文安装教程

Guitar Pro 8.2中文解锁版是一款深受广大音乐人和音乐爱好者喜爱的吉他打谱软件&#xff0c;帮助所有吉他爱好者学习、绘谱、创作&#xff0c;使用非常简单只需直接在五线谱或六线谱上编辑&#xff0c;即可轻松谱写自己的乐章。 Guitar Pro 8.2中文解锁版基本简介 Guitar Pro 8…

spring boot项目中配置文件配置mapper*.xml文件路径无效的问题排查记录

常见的原因在此就不描述了&#xff0c;导致此次自定义mapper无法被绑定的原因在于&#xff1a;项目中定义了sqlSessionFactoryBean&#xff0c;但这个Bean里只对dataSource设置了&#xff0c;并未设置MapperLocations&#xff0c;导致在application.properties中虽配置了mybati…

测试工程师学历路径:从功能测试到测试开发

现在软件从业者越来越多&#xff0c;测试工程师的职位也几近饱和&#xff0c;想要获得竞争力还是要保持持续学习。基本学习路径可以从功能测试-自动化测试-测试开发工程师的路子来走。 功能测试工程师&#xff1a; 1、软件测试基本概念&#xff1a; 学习软件测试的定义、目的…