js鼠标点击添加图标并获取图标的坐标值

给这个图片添加摄像头图标,并获取图标的坐标值,也就是图标的css样式是positon:absolute,获取left和top的值。

图片1

思路是这样的,获取这里的长度, 

图片2

 1.鼠标点击时距浏览器的左边距离和上边距离,相当于(0,0)坐标

let x = e.clientX;
let y = e.clientY;

2.图片距浏览器顶部的距离

let imgTop = $('.imageBox img').offset().top;
let imgLeft = $('.imageBox img').offset().left;

3.就能获取到图片2中箭头的距离,即鼠标点击的位置距背景图顶部的距离

let cursorTop = y - imgTop;
let cursorLeft = x - imgLeft;

4.计算得出图标的left和top值,这里是%。

let width = $('.imageBox img').width();
let height = $('.imageBox img').height();
let left = (cursorLeft/width*100).toFixed(2)
let top = (cursorTop/height*100).toFixed(2)

5.效果如下图,但是鼠标点击处是图标的左上角,感觉好像是差一点

6.应该让鼠标点击处是图标的中心,就需要获取图标中心的坐标,然后 减去图片2中箭头的距离。

//设置添加的小图标的center为中心点
let  pointLeft = $('.imageBox .block').width()*0.5;
let  pointTop = $('.imageBox .block').height()*0.5;//鼠标点击无差距
let xData = cursorLeft - pointLeft;
let yData = cursorTop - pointTop;

7. 完整代码如下

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>.imageBox{width: 800px;position: relative;overflow: hidden;margin: 5% 2%;}.imageBox img{width: 100%;height: 100%;}.imageBox .block{width: 3%;height: 4%;background: url(camera.png) 0 0 no-repeat;background-size: 100% 100%;position: absolute;}</style></head><body><div class="page"><div class="imageBox"><img src="https://img0.baidu.com/it/u=3593454291,2854711423&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500" ><div class="block"></div></div></div><script src="jquery.min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">$('.imageBox').click(function(e){//鼠标点击时距浏览器的左边距离和上边距离,相当于(0,0)坐标let x = e.clientX;let y = e.clientY;//图片的宽高let width = $('.imageBox img').width();let height = $('.imageBox img').height();//图片距浏览器顶部的距离let imgTop = $('.imageBox img').offset().top;let imgLeft = $('.imageBox img').offset().left;//鼠标点击的位置距背景图顶部的距离let cursorTop = y - imgTop;let cursorLeft = x - imgLeft;//设置添加的小图标的center为中心点let  pointLeft = $('.imageBox .block').width()*0.5;let  pointTop = $('.imageBox .block').height()*0.5;//鼠标点击无差距let xData = cursorLeft - pointLeft;let yData = cursorTop - pointTop;let left = (xData/width*100).toFixed(2)let top = (yData/height*100).toFixed(2)console.log(x);console.log(y);// let html = `<div class="block" style="top: ${top}%;left: ${left}%;"></div>`// $('.imageBox').append(html);$('.imageBox .block').css({'top':top+'%'})$('.imageBox .block').css({'left':left+'%'})})</script></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零基础搭建个人网站详细流程

最近两天&#xff0c;为了给自己的工具类APP备案&#xff0c;买了阿里云ECS和域名。虽然很想说离线工具APP不用联网&#xff0c;但是现实就很无语。言归正传&#xff0c;既然买了总不能将它们闲置着&#xff0c;就诞生了建站的想法&#xff0c;至少还能放个用户协议和隐私协议。…

『ARM』和『x86』处理器架构解析指南

前言 如果问大家是否知道 CPU&#xff0c;我相信不会得到否定的答案&#xff0c;但是如果继续问大家是否了解 ARM 和 X86 架构&#xff0c;他们的区别又是什么&#xff0c;相信可能部分人就会哑口无言了 目前随着深度学习、高性能计算、NLP、AIGC、GLM、AGI 的技术迭代&#…

【c语言】atoi的模拟实现

1.头文件 atoi() 是 C语言的一个标准库函数&#xff0c;定义在<stdlib.h>头文件中 2.atoi的解析 具体来讲&#xff0c;atoi() 函数首先会丢弃尽可能多的空白字符&#xff0c;直至找到第一个非空白字符&#xff0c;然后从该字符开始&#xff0c;识别 “”、“-” 以及 …

【脉冲通信】用于空间应用的飞秒脉冲通信的符号误码率模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

TCP通信实战:模拟BS系统

1、之前的客户端都是什么样的 其实就是CS架构&#xff0c;客户端是需要我们自己开发实现的 2、BS结构是什么样的&#xff0c;需要开发客户端吗&#xff1f; 浏览器访问服务端&#xff0c;不需要开发客户端 注意&#xff1a;服务端必须给浏览器响应HTTP协议格式的数据&#xff0…

[swift刷题模板] 树状数组(BIT/FenwickTree)

[TOC]([swift刷题模板] 树状数组(BIT/FenwickTree) ) 一、 算法&数据结构 1. 描述 [python刷题模板] 树状数组 二、 模板代码 1. 单点赋值(增加)&#xff0c;区间求和(PURQ) 例题: 307. 区域和检索 - 数组可修改 class BIT {var c: [Int]var n: Int init(_ n: Int){c…

基于SpringBoot的招生管理系统

基于SpringBoot的招生管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 基于SpringBoot的招生管理系统是一款现…

node快速搭建一个学习资料共享平台

概述 本文要实现的功能比较简单&#xff1a;1、将想要共享的文件分文件夹的组织起来&#xff1b;2、别人可以通过界面进行搜索&#xff1b;3、可以在线预览或下载文件。基于这样的需求&#xff0c;本文分享通过node如何实现这样的功能。 实现效果 实现 1. node端服务 node端…

基于SSM的大学校医管理系统

基于SSM的大学校医管理系统、学校医院管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录系统 用户界面 管理员界面 摘要 大学校医管理系统…

​蔚来自动驾驶,从 2020 年开始讲起的故事

2020 年底&#xff0c;摆脱 2019 年阴霾的李斌先生&#xff0c;热情而兴奋&#xff0c;再一次说&#xff1a;「欢迎来到蔚来日。」 那天蔚来发布了令人咋舌的智能驾驶硬件系统&#xff0c;4 块当时甚至还没有宣布量产日期的 Orin 芯片&#xff0c;11 路高清摄像头。 早在 ET7…

汽车智能制造中的RFID技术在供应链生产管理中的应用

行业背景 汽车零部件工业是汽车工业中至关重要的一部分&#xff0c;对于汽车工业的长期稳定发展起着基础性的作用&#xff0c;近年来&#xff0c;汽车配件配套市场规模达到了2000亿元&#xff0c;维修市场达到了600亿元&#xff0c;随着汽车国产化的推进&#xff0c;汽车零部件…

【TensorFlow1.X】系列学习笔记【入门二】

【TensorFlow1.X】系列学习笔记【入门二】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【入门二】前言神经网络的参数神经网络的搭建前向传播反向传播 总结 前言 学习了张量、…

Pandas数据处理分析系列3-数据如何预览

Pandas-数据预览 Pandas 导入数据后,我们通常需要对数据进行预览,以便更好的进行数据分析。常见数据预览的方法如下: ①head() 方法 功能:读取数据的前几行,默认显示前5行 语法结构:df.head(行数) df1=pd.read_excel("销售表.xlsx",sheet_name="手机销…

WMS透明仓库:实现仓储的全方位可视化与优化

一、WMS透明仓库的定义与特点 1. WMS透明仓库的定义&#xff1a;WMS透明仓库是一种基于信息技术的仓库管理系统&#xff0c;通过实时数据采集、分析和可视化&#xff0c;将仓库内外的物流流程、库存状态、人员活动等信息以透明的方式展示给相关利益方。 2. 实时数据采集&…

Hadoop学习总结(搭建Hadoop集群(完全分布式模式))

学习搭建Hadoop集群&#xff08;完全分布式模式&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1wwTKk-XxHbccHjE-Xk2PTA 提取码&#xff1a;q7j7 在SecurityCRT 或者在 Xshell 进行虚拟机链接 &#xff08;这里使用Xshell &#xff09; 在hadoop001里配置 如果没…

中文编程开发语言工具构件说明:屏幕截取构件的编程操作

屏幕截取 用于截取指定区域的图像。 图 标&#xff1a; 构件类型&#xff1a;不可视 重要属性 l 截取类型 枚举型&#xff0c;设置在截取屏幕时的截取类型。包括&#xff1a;全屏幕、指定区域、活动窗口三种。当全屏幕截取时相当于执行了硬拷屏&#xff08;PrintScre…

0基础学习PyFlink——模拟Hadoop流程

学习大数据还是绕不开始祖级别的技术hadoop。我们不用了解其太多&#xff0c;只要理解其大体流程&#xff0c;然后用python代码模拟主要流程来熟悉其思想。 还是以单词统计为例&#xff0c;如果使用hadoop流程实现&#xff0c;则如下图。 为什么要搞这么复杂呢&#xff1f; 顾…

xlive.dll下载安装方法分享,教你快速修复xlive.dll文件

在运行某些应用程序或游戏时&#xff0c;你可能会遭遇到"xlive.dll缺失"错误提示&#xff0c;这可能导致程序无法正常运行。本文将向你介绍一些可行的解决方法教你下载xlive.dll文件&#xff0c;并详细阐述xlive.dll是什么文件以及导致其缺失的原因。 一.理解"x…

Docker-镜像的备份迁移及私有仓库的搭建

一、Docker-备份与迁移 A服务器系统配置 B服务器系统配置 1.用命令将容器保存为镜像。 案例&#xff0c;将A服务器的Docker容器迁移到另外一台服务器B&#xff0c;A服务器的容器配置过对应的文件&#xff0c;不想在B服务器重新搭建&#xff0c;可以使用该案例。 docker c…

FL studio21永久激活码 附带一键下载安装包

玩音乐的朋友&#xff0c;对FL studio肯定不陌生&#xff0c;目前最新的版本是FL studio21&#xff0c;这是一款非常强大且专业的音频制作软件&#xff0c;而且还可以编曲、剪辑、录音、混音等等之类的创作操作&#xff0c;使你的计算机成为一个全功能录音室。下面小编就来和大…