JS_围绕圆形滑动
需求:滑动手势最大不能超过一个半径为50的圆形,超出围绕圆形边线滑动
这里只提供一个思路,下面代码可以运行,但是要使用需要改成自己的参数
<div style="width: 100%;height: 100vh;display: flex;justify-content: center;align-items: center;"><div style="width: 100px;height: 100px;background: #888;border-radius: 50%;"><div id="myElement" style="width: 20px;height: 20px;border-radius: 50%;background: red;position: absolute;"></div></div>
</div>
<script>var circleRadius = 50; // 圆形半径// 获取圆心坐标var circleCenterX = window.innerWidth / 2;var circleCenterY = window.innerHeight / 2;// 添加滑动事件监听器document.addEventListener('mousemove', handleMouseMove);// 处理滑动事件function handleMouseMove(event) {// 获取鼠标相对于窗口的坐标var mouseX = event.clientX;var mouseY = event.clientY;// 计算鼠标位置相对于圆心的偏移量var offsetX = mouseX - circleCenterX;var offsetY = mouseY - circleCenterY;// 计算鼠标位置相对于圆心的距离var distance = Math.sqrt(offsetX * offsetX + offsetY * offsetY);// 如果距离大于半径,则将偏移量按比例缩小到半径范围内if (distance > circleRadius) {var ratio = circleRadius / distance;offsetX *= ratio;offsetY *= ratio;}// 计算围绕圆心的新坐标var newX = circleCenterX + offsetX;var newY = circleCenterY + offsetY;// 更新元素位置(这里假设要更新一个元素的位置)var element = document.getElementById('myElement');element.style.left = newX + 'px';element.style.top = newY + 'px';}
</script>
示例

此示例是一个鼠标按下放开的示例,手机端可以替换为手机的事件
<div style="width: 100%;height: 100vh;display: flex;justify-content: center;align-items: center;"><div style="width: 100px;height: 100px;background: #888;border-radius: 50%;position: relative;display: flex;justify-content: center;align-items: center;"><div onmousedown="mousedown(event)" onmouseup="mouseup(event)" id="myElement" style="width: 20px;height: 20px;border-radius: 50%;background: red;position: relative;"></div></div>
</div>
<script>var circleRadius = 50; // 圆形半径// 获取圆心坐标var circleCenterX = 0var circleCenterY = 0// 添加滑动事件监听器document.addEventListener('mousemove', handleMouseMove);function mousedown(event) {circleCenterX = event.clientX;circleCenterY = event.clientY;}function mouseup() {circleCenterX = 0circleCenterY = 0var element = document.getElementById('myElement');element.style.left = '0px';element.style.top = '0px';}// 处理滑动事件function handleMouseMove(event) {// 获取鼠标相对于窗口的坐标var mouseX = event.clientX;var mouseY = event.clientY;// 计算鼠标位置相对于圆心的偏移量var offsetX = mouseX - circleCenterX;var offsetY = mouseY - circleCenterY;// 计算鼠标位置相对于圆心的距离var distance = Math.sqrt(offsetX * offsetX + offsetY * offsetY);// 如果距离大于半径,则将偏移量按比例缩小到半径范围内if (distance > circleRadius) {var ratio = circleRadius / distance;offsetX *= ratio;offsetY *= ratio;}// 计算围绕圆心的新坐标var newX = offsetX;var newY = offsetY;if(circleCenterX >0) {// 更新元素位置(这里假设要更新一个元素的位置)var element = document.getElementById('myElement');element.style.left = newX + 'px';element.style.top = newY + 'px';}}
</script>
相关文章:
JS_围绕圆形滑动
需求:滑动手势最大不能超过一个半径为50的圆形,超出围绕圆形边线滑动 这里只提供一个思路,下面代码可以运行,但是要使用需要改成自己的参数 <div style"width: 100%;height: 100vh;display: flex;justify-content: cente…...
Ubuntu上安装RabbitMQ
在Ubuntu上安装RabbitMQ并设置管理员用户为"admin",密码为"123456",并开启开机自启 更新系统软件包列表。在终端中执行以下命令: sudo apt update安装RabbitMQ服务器软件包。运行以下命令: sudo apt insta…...
统计学和机器学习之间的联系和区别
一、说明 老实说,我厌倦了几乎每天都在社交媒体和我的大学里听到这场辩论。通常,这伴随着一些模糊的陈述来解释这个问题。双方都为此感到内疚。我希望在本文结束时,您将对这些有些模糊的术语有更明智的立场。 二、论点 与普遍的看法相反&…...
linux中profile.d和profile的区别
profile.d在profile中加载 profile文件 PATH"/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/scripts:/soc/bin:/soc/scripts" LD_LIBRARY_PATH"/usr/local/lib:/usr/lib:/opt/lib:/soc/lib" export SSL_LDPATH/usr/local/lib/ export ZLIB_LDPATH/usr/lo…...
MobaXterm sftp 不能拖拽文件夹了?
原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不能拖动文件。把管理员权限去掉就恢复正常了。 原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不能拖动文件。把管理员权限去掉就恢复正常了。 原因是我把mobaxterm设置成Windows管理员权限运行了,结果就不…...
【ArcGIS Pro二次开发】(59):Editing(编辑)模块
ArcGIS Pro SDK中的"Editing"(编辑)模块提供了一系列API和工具,允许开发人员在ArcGIS Pro中实现各种地图数据编辑操作,从简单的要素绘制到复杂的数据集编辑。 下面列举一些常用编辑工具的实现方法。 1、获取所选要素的…...
WebSocket与消息推送
B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链接,但…...
5.1 web浏览安全
数据参考:CISP官方 目录 Web应用基础浏览器所面临的安全威胁养成良好的Web浏览安全意识如何安全使用浏览器 一、Web应用基础 1、Web应用的基本概念 Web ( World wide Web) 也称为万维网 脱离单机Web应用在互联网上占据了及其重要的地位Web应用的发展…...
(六)Unity开发Vision Pro——词汇表
1.PolySpatial Core (com.unity.polyspatial):基础 PolySpatial 包,初始化和所有设置从这里开始。它执行更改跟踪和处理、序列化/反序列化,并包括 ShaderGraph 到 MaterialX 转换器 2.PolySpatial XR (com.unity.polyspatial.xr):…...
算法随笔:图论问题之割点割边
割点 定义 割点的定义:如果一个点被删除之后会导致整个图不再是一个连通图,那么这个顶点就是这个图的割点。举例: 上图中的点2就是一个割点,如果它被删除,则整个图被分为两个连通分量,不再是一个连通图。…...
【虚幻引擎】UE5数字人的创建
安装插件 在插件里面找到MetaHuman,设置激活,然后重启引擎 找到bridge,并开启,这个需要我们制作完成的metahuman需要在这个插件里下载,unreal5自动安装 创建metahuman 首先添加一个metahuman本体,如果你的插…...
算法:深度优先遍历
文章目录 什么是深搜典型题目积累 本篇主要积累的是深度优先遍历算法 什么是深搜 深度优先搜索英文缩写为 DFS 即Depth First Search 其过程是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次 简单来说就是: 一路走到头,不撞墙…...
Stable Diffusion + Deform制作指南
1.安装sd以及deform插件,更新后记得重启 需要安装ffmpeg https://ffmpeg.org/download.html 选择对应版本然后安装 如果是windows需要解压后将ffmpeg的bin目录配置在电脑的环境变量里面。 2.准备一张初始开始图片 3.填写参数,这里面参数要注意,宽高一定是32的倍数。如果填写…...
ssm+vue网上花店设计源码和论文
ssmvue网上花店设计源码和论文017 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用…...
【leetcode】第一章数组
704. 二分查找 边界值需注意left代表左边界下标值,right代表右边界的下标值当数组只有一个元素时,此时如果找到该元素应该返回下标0,因此条件为left<right当mid的元素值大于target时,此时说明我们想找的target在右边ÿ…...
01|Java中常见错误或不清楚
补充:length vs length() vs size() 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的siz…...
递归的用法和例子
b站视频:https://www.bilibili.com/video/BV1iS4y1e7MJ/?spm_id_from333.999.0.0&vd_source1717654b9cbbc6a773c2092070686a95 # 递归的定义:其实就是自己调用自己,一般用函数的形式来进行 """ 特点: 1、一定…...
极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)
目录 template 引用,减少代码冗余,增强 CI/CD 构建扩展性 问题 1:代码冗余,低效实践 问题 2:维护性难,工作量大 ➤ local ➤ file ➤ remote ➤ template 收益 1:一处修改,多…...
springBoot 简单的demo
springBoot 学习开始 场景开发流程1、创建项目2、导入依赖3、创建启动springBoot 项目的主入口程序4、创建业务程序5、在MainApplication文件运行程序6、将文件打包成jar包 遇到的问题未解决 希望大哥们帮忙--本地运行jar包报错 场景 浏览器发送hello请求,返回“he…...
[国产MCU]-BL602开发实例-实时时钟(RTC)
RTC 文章目录 RTC1、RTC介绍2、RTC使用实例RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。…...
扫地机器人行业 企业篇-科沃斯
科沃斯成立于1998年,早期为海外品牌代工吸尘器,2009年发布全球首款量产扫地机器人"地宝",正式拉开中国扫地机市场序幕。公司为A股上市公司,总部位于苏州,公司性质为民营企业。 2025年全年营收达190亿元&…...
Cowrie SSH蜜罐:协议层行为建模与威胁情报流水线
1. 为什么一个SSH蜜罐能比防火墙更早告诉你“有人在敲门” 你有没有过这种经历:某天凌晨三点,安全告警平台突然弹出一条“SSH暴力破解尝试激增”,点开一看——IP来自巴西、乌克兰、越南,每秒27次登录请求,用户名穷举了…...
机器学习引导的多目标运动规划:TSP与采样搜索的深度耦合
1. 项目概述:当机器人需要“跑腿”时,我们如何为它规划最优路线?想象一下,你是一个仓库管理员,手里有一台自动导引车(AGV),今天它的任务是从仓库的充电桩出发,依次去货架…...
从临床医疗说起:当一种科学理论走到边界的时候
我有一个同学,是搞肌肉医学的。他在临床中发现了一个现象:某种头昏,在内科的检查检验和治疗框架下,往往找不出头绪;但从肌肉学的角度看,它可能只是枕下肌群的劳损。松解之后,头昏可以得到有效而…...
各个AI公司都在玩的Harness 架构:Harness架构深度解析
Harness 架构深度解析为什么 AI 智能体的未来不是框架,而是「运行壳」TL;DR 三分钟看懂这篇文章•当 Claude Code、Cursor、Codex、Windsurf 四款产品独立演化出几乎相同的内部架构时,一种叫做 Harness(运行壳)的新形态浮出水面。…...
技术人的职业规划:打造成功的职业生涯
技术人的职业规划:打造成功的职业生涯 引言 作为一名技术人,职业规划是实现职业目标的关键。在快速变化的技术领域,一个清晰的职业规划可以帮助我们明确方向,抓住机会,实现个人价值。 回顾我的职业历程,从一…...
鸿蒙健身计划页面构建:训练英雄区与今日训练模块详解
鸿蒙健身计划页面构建:训练英雄区与今日训练模块详解 前言 在 HarmonyOS 6.0 应用开发中,健身类页面的核心挑战在于如何展示训练进度、训练目标和实时数据。本文将以“健身计划”应用的主页面为例,深入解析如何在鸿蒙平台上构建健身管理类应用…...
UnrealPakViewer:虚幻引擎Pak文件分析终极可视化工具
UnrealPakViewer:虚幻引擎Pak文件分析终极可视化工具 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer UnrealPakViewer是一款专业的开源工…...
【审计专栏】【财务领域】第二十八篇 全球/中国货币流动中离钱最近的岗位01
全球/中国货币流动和流入/流出最近的距离相关信息,特别关注“离钱最近的岗位”,按照指定表格格式输出如下: 编号 类型 国家 省/市/区县 行业 公司类型 岗位类型【含管理岗/基层岗位】 离货币收入/投放的距离指标和偏差指数和期望/方差 指标类型 模型逐步推理思考的…...
5分钟拯救你的B站收藏:m4s缓存视频无损转换实战
5分钟拯救你的B站收藏:m4s缓存视频无损转换实战 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾眼睁睁看着心爱的B站视频下架…...
