js案例:跟随鼠标移动的大虫子

news2024/11/27 15:47:40

目录

效果预览图

整体思路

完整代码 


效果预览图

整体思路

  1. rang 函数用于生成指定范围内的随机整数。

  2. 通过循环,创建了50个div元素,每个div都有一个不同的数字和随机的背景颜色。

  3. 给每个div元素添加了名为 "ball" 的类名。

  4. 通过 document.querySelectorAll('.ball') 获取所有具有 "ball" 类名的元素,然后将它们存储在 divs 变量中。

  5. divs 中的最后一个元素(第50个div)添加了 mousedown 事件处理程序。当鼠标按下时,获取鼠标相对于该div的偏移,并添加 mousemove 事件处理程序,以便在移动鼠标时更新该div的位置,从而实现拖动效果。

  6. document 添加了 mouseup 事件处理程序。当鼠标抬起时,通过 setInterval 定时器,定期更新除了最后一个div之外的所有div的位置,实现了动画效果。同时,清除了之前设置的 mousemove 事件处理程序。

      7.div元素跟随鼠标移动,而其余的div元素则以一定的速度向前移动,形成动画效果。

完整代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>大虫子</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .ball{
            width: 50px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            border-radius: 50%;
            color: #fff;
            position: absolute;
            left: 0;
            top: 0;
            user-select: none;
        }
    </style>
</head>
<body>
    
</body>
</html>
<script>
    function rang(m,n){
        return Math.floor(Math.random()*(n-m+1)+m)
    }
    for (let i = 1; i <= 50; i++) {
        let div = document.createElement('div')
        div.innerHTML = i;
        document.body.appendChild(div);
        div.style.background = `rgb(${rang(0,255)},${rang(0,255)},${rang(0,255)})`;
        div.className = 'ball';
        
    }
    let divs = document.querySelectorAll('.ball')
    divs[49].onmousedown = function(){
        let diX = event.clientX - divs[49].offsetLeft;
        let diY = event.clientY - divs[49].offsetTop;
       document.onmousemove = function(){
        for (let i = 0; i < divs.length-1; i++) {
            divs[i].style.left = divs[i+1].style.left;
            divs[i].style.top = divs[i+1].style.top;
        }
        divs[49].style.left = event.clientX-diX+'px'
        divs[49].style.top = event.clientY-diY+'px'
       }
    }
    let timmer;
    document.onmouseup = function(){
        timmer = setInterval(function(){
            for (let i = 0; i < divs.length-1; i++) {
            divs[i].style.left = divs[i+1].style.left;
            divs[i].style.top = divs[i+1].style.top;
        }
        },50)
        
        document.onmousemove = null;
    }
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么说葡萄酒越复杂,越有可能陈年?

大家都觉得老酒更好&#xff0c;对吧&#xff1f;一瓶酒在黑暗的洞穴里放得越久&#xff0c;瓶子慢慢积灰&#xff0c;我们喝的时候就越好喝&#xff0c;对吗&#xff1f;其实是不对的&#xff01;葡萄酒陈酿的根本原因是为了让它的味道更好&#xff0c;或者更确切地说让风味发…

一文懂得电源模块过温保护测试方法 ate测试软件助力测试

过温保护测试是电源模块保护功能测试项目之一&#xff0c;也是电源模块测试的重要测试指标&#xff0c;以保证电源模块过温保护功能正常&#xff0c;确保电源模块不受损坏。用ate测试软件测试电源模块过温保护&#xff0c;不仅可以保证测试结果的准确性&#xff0c;还可以多维度…

SAP 70策略测试简介

在前面的文章中我们已经测试了10、11、20、40、50、52、60、62策略的测试,接下来我们需要对70策略进行测试,很多的项目中也都会用到70策略。 70策略是一种比较常见的、基于按库存且主要用于半成品或者原材料的计划策略。 我们还是按照之前的惯例,先看下70策略的后台配置 我…

书单 | 11月程序员新书播报

11月最新上架计算机书籍 1、人工智能&#xff08;第3版&#xff09; 美国经典人工智能教材第3版&#xff0c;人工智能的百科全书&#xff0c;新增深度学习及人工智能编程等内容&#xff0c;理论阐释结合动手实践&#xff0c;附赠PPT课件、配套视频及代码文件。 1.人工智能经典…

Linux线程池

文章目录&#xff1a; 线程池了解线程池模拟实现 线程池了解 线程池是一种常见的线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务&#xff0c;以避免在处理短时间任…

Python爬虫过程中DNS解析错误解决策略

在Python爬虫开发中&#xff0c;经常会遇到DNS解析错误&#xff0c;这是一个常见且也令人头疼的问题。DNS解析错误可能会导致爬虫失败&#xff0c;但幸运的是&#xff0c;我们可以采取一些策略来处理这些错误&#xff0c;确保爬虫能够正常运行。本文将介绍什么是DNS解析错误&am…

JLMR Micro Super Resolution Algorithm国产微超分算法DEMO

一、简介 目前&#xff0c;做超分算法基本还是以AI训练为主&#xff0c;但是AI基本上都是基于既定场景的训练。而传统的算法基本上都是利用上下文的纹理预测、插值等方案&#xff0c;在图像放大过程中会出现模糊&#xff0c;或马赛克等现象。 我们基于加权概率模型&#xff0c…

后端接口性能优化分析-1

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

SQLite3 数据库学习(一):数据库和 SQLite 基础

参考引用 SQL 必知必会SQLite 权威指南&#xff08;第二版&#xff09;关系型数据库概述 1. 数据库基础 1.1 什么是数据库 数据库&#xff08;database&#xff09;&#xff1a;保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09; 可以将其想象为一个文…

谷歌提出AGI的6大原则,和5大能力等级

随着ChatGPT等大模型的出现,AGI概念正在从哲学层面快速转向实际应用落地&#xff0c;并且ChatGPT已经展示出了初级AGI的功能&#xff08;如AutoGPT&#xff09;,有不少专家认为&#xff0c;AGI时代可能在10年内到来。 因此&#xff0c;需要一个明确的技术框架来讨论和衡量不同…

图片转excel的三种方案(电脑、手机)

图片怎么转换成excel文件呢?用金鸣表格文字识别是最便捷、最佳的解决方案。也许有些同学会问,那我用手工也可以解决呀,干吗要用软件?这么想就不对了,手工做不但要做表格线,还要手工打字,非常麻烦,而且容易出错,特别是对于数字多的图片,更是要命,现在有金鸣识别就不用那么麻烦…

python读取excel,进行数据处理

一、准备python编译器 二、下载 pyexcel 库 pip install pyexcel-xls三、进行编码读取数据 import pyexcel# 读取Excel文件 成本中心字典 data pyexcel.get_array(file_name成本中心.xls)def hand():#打印数据#print(data)url f"INSERT INTO dst_base.sys_dict(p_…

efcore反向共工程,单元测试

1.安装efcore需要的nuget <PackageReference Include"Microsoft.EntityFrameworkCore" Version"6.0.24" /> <PackageReference Include"Microsoft.EntityFrameworkCore.SqlServer" Version"6.0.24" /> <PackageRefere…

评论:AlexNet和CaffeNet有何区别?

一、说明 在这个故事中&#xff0c;我们回顾了AlexNet和CaffeNet。AlexNet 是2012 年ILSVRC&#xff08;ImageNet 大规模视觉识别竞赛&#xff09;的获胜者&#xff0c;这是一项图像分类竞赛。而CaffeNet是AlexNet的单GPU版&#xff0c;因此&#xff0c;我们平时在普通电脑的Al…

Fortinet 聚焦核心业务增长领域,巩固网安市场领导地位,持续推动行业创新

近日&#xff0c;专注于推动网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;发布第三季度财报。同期&#xff0c;Fortinet做出重大战略宣布&#xff0c;未来将重点聚焦高速增长的差异化市场。Fortinet 将紧紧围绕安全组网、Univer…

中馥集团双11当日发货销售额突破1000万!

昨日&#xff0c;中馥集团双十一当日发货销售额突破1000万&#xff0c;再创新高&#xff01;双十一大促期间&#xff0c;中馥集团全体上下通力合作&#xff0c;每场直播商品经层层筛选、严格评选的“名品”&#xff0c;既有优质精品文化酒&#xff0c;也有市场火爆的高端酱酒&a…

【java学习—十四】Class类(2)

文章目录 1. Class类2. Class类的常用方法3. 实例化Class类对象&#xff08;四种方法&#xff09; 1. Class类 在 Object 类中定义了以下的方法&#xff0c;此方法将被所有子类继承&#xff1a; public final Class getClass() 以上的方法返回值的类型是一个 Class 类&#xf…

vue2中使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Linux必备基础命令,JAVA程序员必备

目录 一、了解基本的左侧栏什么意思​编辑 二、ls&#xff0c;ll&#xff08;list&#xff0c;查找目录内容) 三、cd(change directory&#xff0c;切换目录) 小技巧&#xff0c;我们在查找东西的时候&#xff0c;可以使用tab进行智能补全。 四、touch&#xff08;建立文件…

【运维】-- 在线网络工具

1、https://ping.pe/ 一个免费的在线网络工具&#xff0c;可以帮助您检测和分析IP地址的连接情况。 这是搬瓦工官方做的一个 ping 在线测试网站工具。比较适合测试短时间的 ping 统计&#xff0c;并且在网页上以图表形式统计显示出来。 PS&#xff1a; a、丢包会以红色显示出…