位置: IT常识 - 正文

JS中的鼠标事件(js鼠标键盘事件)

编辑:rootadmin
JS中的鼠标事件

目录

前言

一、鼠标事件属性

1. MouseEvent.button属性

2. MouseEvent.clientX,MouseEvent.clientY

 3. MouseEvent.offsetX,MouseEvent.offsetY

 4. MouseEvent.pageX,MouseEvent.pageY

二、案例

1.案例一

2. 案例二

总结

前言

推荐整理分享JS中的鼠标事件(js鼠标键盘事件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js的鼠标点击事件,js操作鼠标,js中的鼠标事件有哪些,js中的鼠标事件有哪些,js的鼠标事件改变盒子宽度,js中的鼠标事件有哪些,js中的鼠标事件有哪些,js中的鼠标事件有哪些,内容如对您有帮助,希望把文章链接给更多的朋友!

通过鼠标触发事件,类似用户的行为:

属性描述onclick当单击鼠标时运行脚本。onmousedown当按下鼠标按钮时运行脚本。onmouseup当松开鼠标按钮时运行脚本。onmousemove当鼠标指针移动时运行脚本。onmouseover当鼠标指针移至元素之上时运行脚本,不可以阻止冒泡。onmouseout当鼠标指针移出元素时运行脚本,不可以阻止冒泡。onmouseenter当鼠标指针移至元素之上时运行脚本,可以阻止冒泡。onmouseleave当鼠标指针移出元素时运行脚本,可以阻止冒泡。onmousewheel当转动鼠标滚轮时运行脚本。onscroll当滚动元素的滚动条时运行脚本。

mouseover事件和mouseenter事件,都是鼠标进入一个节点时触发。两者的区别是,mouseenter事件只触发一次,而只要鼠标在节点内部移动,mouseover事件会在子节点上触发多次。

var div = document.getElementById("div")var p = document.getElementById("p")div.onmouseover=function(){ console.log("div")}p.onmouseover=function(){ console.log("p") } //冒泡阶段div.onmouseenter=function(){ console.log("div")}p.onmouseenter=function(){ console.log("p")} //捕获阶段一、鼠标事件属性1. MouseEvent.button属性

MouseEvent.button属性返回一个数值,表示事件发生时按下了鼠标的哪个键。 0代表左键 1代表中键 2代表右键

document.body.onmousedown=function(e){ e=e||window.event console.log(e.button)}2. MouseEvent.clientX,MouseEvent.clientY

MouseEvent.clientX属性返回鼠标位置相对于浏览器窗口左上角的水平坐标, MouseEvent.clientY属性返回鼠标位置相对于浏览器窗口左上角的垂直坐标, 这两个属性都是只读属性。

document.body.onmousedown=function(e){ e=e||window.event console.log(e.clientX,e.clientY)} 3. MouseEvent.offsetX,MouseEvent.offsetY

MouseEvent.offsetX属性返回鼠标位置距离事件作用对象左侧边缘的水平距离, MouseEvent.offsetY属性返回鼠标位置距离事件作用对象左侧边缘的垂直距离, 这两个属性都是只读属性。

div.onclick=function(e){ e=e||window.event console.log(e.offsetX,e.offsetY) //鼠标事件触发时,当前鼠标位置距离目标节点左上角的距离} 4. MouseEvent.pageX,MouseEvent.pageYJS中的鼠标事件(js鼠标键盘事件)

MouseEvent.pageX属性返回鼠标位置距离文档左侧边缘的距离, MouseEvent.pageY属性返回鼠标位置距离文档顶部的距离。 这两个属性都是只读属性。

document.body.onclick=function(e){ e=e||window.event console.log("pageY:"+e.pageY) //距离文档顶部 console.log("clientY:"+e.clientY) //距离可视窗口顶部}二、案例1.案例一

创建一个正方形div,默认颜色为黑色,当鼠标移入div,背景颜色变为红色,当鼠标移出div,背景颜色变为绿色

代码如下(示例):

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title></title></head><body><div id="box" style="width: 100px;height: 100px;background: black;"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --><script> var box = document.getElementById("box"); /* 当鼠标移入div,背景颜色变为红色 */ box.onmouseenter = function () { this.style.background = "red"; }; /* 当鼠标移出div,背景颜色变为绿色 */ box.onmouseleave = function () { this.style.background = "green"; };</script></body></html>2. 案例二

编写一个通用的拖拽元素函数,创建两个div,进行拖拽演示,要求兼容IE8、火狐、谷歌等主流浏览器

代码如下(示例):

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title></title></head><body><div id="box1" style="width: 100px;height: 100px;background: red;position: absolute;"></div><div id="box2" style="width: 100px;height: 100px;background: green;position: absolute;"></div><!-- 在这里写JavaScript代码,因为JavaScript是由上到下执行的 --><script> var box1 = document.getElementById("box1"); var box2 = document.getElementById("box2"); drag(box1); drag(box2); /* * 提取一个专门用来设置拖拽的函数 * 参数:开启拖拽的元素 */ function drag(obj) { //当鼠标在被拖拽元素上按下时,开始拖拽 obj.onmousedown = function (event) { // 解决事件的兼容性问题 event = event || window.event; // 设置obj捕获所有鼠标按下的事件 /** * setCapture(): * 只有IE支持,但是在火狐中调用时不会报错, * 而如果使用chrome调用,它也会报错 */ obj.setCapture && obj.setCapture(); // obj的偏移量 鼠标.clentX - 元素.offsetLeft // obj的偏移量 鼠标.clentY - 元素.offsetTop var ol = event.clientX - obj.offsetLeft; var ot = event.clientY - obj.offsetTop; // 为document绑定一个鼠标移动事件 document.onmousemove = function (event) { // 解决事件的兼容性问题 event = event || window.event; // 当鼠标移动时被拖拽元素跟随鼠标移动 // 获取鼠标的坐标 var left = event.clientX - ol; var top = event.clientY - ot; // 修改obj的位置 obj.style.left = left + "px"; obj.style.top = top + "px"; }; // 为document绑定一个鼠标松开事件 document.onmouseup = function () { // 取消document的onmousemove事件 document.onmousemove = null; // 取消document的onmouseup事件 document.onmouseup = null; // 当鼠标松开时,取消对事件的捕获 obj.releaseCapture && obj.releaseCapture(); }; /* * 当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容, * 此时会导致拖拽功能的异常,这个是浏览器提供的默认行为, * 如果不希望发生这个行为,则可以通过return false来取消默认行为, * 但是这招对IE8不起作用 */ return false; }; }</script></body></html>总结

假如我们正监视一个容器上的鼠标事件,而容器中添加了一些组件,则当在组件上进行单击鼠标、移动鼠标等操纵时,容器将不知道这些操纵的发生。

可以使用鼠标事件的转移将一个事件源发生的鼠标事件转移到另一个事件源上,也就是说,当用户的在某个事件源上单击鼠标时,可以通过鼠标事件的转移导致另一个事件源上发生鼠标事件(声东击西)。使用javax.swing包中的SwingUtilities类的静态方法:

MouseEvent convertMouseEvent(Component source,MouseEvent sourceEvent,Component destination)

可以将source组件上发生的鼠标事件转移到组件destination,该方法返回转移后的鼠标事件。 在下面的例子mouse6.java中,用户单击一个按钮,然后拖动鼠标移动按钮的位置,观察鼠标事件的转移。

       以上就是今天要讲的内容,本文仅仅简单介绍了JS中的鼠标事件。

本文链接地址:https://www.jiuchutong.com/zhishi/296039.html 转载请保留说明!

上一篇:Nginx 调整文件上传大小限制(nginx配置文件格式)

下一篇:Pytorch 2.0来了!来看看新特性怎么应用到自己的代码里(pytorch1.9.0)

  • 苹果手机有面容和无面容有什么区别(苹果手机有面容和无面容什么意思)

    苹果手机有面容和无面容有什么区别(苹果手机有面容和无面容什么意思)

  • miui12如何设置图标大小(miui12怎么在桌面上放图片框)

    miui12如何设置图标大小(miui12怎么在桌面上放图片框)

  • 电脑节能模式开不了机(电脑节能模式开不开机)

    电脑节能模式开不了机(电脑节能模式开不开机)

  • 手机来电转移怎么设置(手机来电转移怎么设置不了)

    手机来电转移怎么设置(手机来电转移怎么设置不了)

  • 手机直播怎避免反光(手机直播怎避免掉帧)

    手机直播怎避免反光(手机直播怎避免掉帧)

  • p40相机多少倍(p40pro相机多少倍)

    p40相机多少倍(p40pro相机多少倍)

  • 在windows中双击驱动器图标的作用是(在Windows中双击窗口的控制菜单图标实现的操作是)

    在windows中双击驱动器图标的作用是(在Windows中双击窗口的控制菜单图标实现的操作是)

  • 抖音怎么换自己照片拍同款(抖音怎么换自己的照片)

    抖音怎么换自己照片拍同款(抖音怎么换自己的照片)

  • 电脑运行中突然黑屏怎么办(电脑运行中突然关机打不开了)

    电脑运行中突然黑屏怎么办(电脑运行中突然关机打不开了)

  • 蜜源淘宝授权失败怎么回事(蜜饯授权淘宝异常)

    蜜源淘宝授权失败怎么回事(蜜饯授权淘宝异常)

  • 华为p20pro尺寸多大屏(华为p20pro尺寸多大)

    华为p20pro尺寸多大屏(华为p20pro尺寸多大)

  • 手机充电器三种分类(手机充电器三种接口图片)

    手机充电器三种分类(手机充电器三种接口图片)

  • 10000mah充电宝能充多久(10000mah充电宝能充几个手机)

    10000mah充电宝能充多久(10000mah充电宝能充几个手机)

  • 小电扫码怎么退押金(小电归还二维码)

    小电扫码怎么退押金(小电归还二维码)

  • oppor11开发者选项在哪(oppor11开发者选项有什么用)

    oppor11开发者选项在哪(oppor11开发者选项有什么用)

  • 小米6怎么设置信息显示(小米6怎么设置锁屏壁纸)

    小米6怎么设置信息显示(小米6怎么设置锁屏壁纸)

  • 苹果语言备忘录怎么改名字(苹果语言备忘录删掉后重新安装APP语音还在吗)

    苹果语言备忘录怎么改名字(苹果语言备忘录删掉后重新安装APP语音还在吗)

  • 苹果8p能用airpods吗(苹果8P能用电信卡吗)

    苹果8p能用airpods吗(苹果8P能用电信卡吗)

  • 苹果扩内存对手机有什么影响(苹果扩内存对手机有用吗)

    苹果扩内存对手机有什么影响(苹果扩内存对手机有用吗)

  • vivo接通电话震动怎么设置(vivo接通电话震动怎么关闭)

    vivo接通电话震动怎么设置(vivo接通电话震动怎么关闭)

  • 苹果8发热(苹果8发热严重正常吗)

    苹果8发热(苹果8发热严重正常吗)

  • 显示器颜色发黄(显示器颜色发黄怎么调)

    显示器颜色发黄(显示器颜色发黄怎么调)

  • 一寸照片手机怎么拍(一寸照片手机怎么排版)

    一寸照片手机怎么拍(一寸照片手机怎么排版)

  • 2022最新CPU天梯图(最新cpu天梯表)

    2022最新CPU天梯图(最新cpu天梯表)

  • Vue打包优化篇-CDN加速(vue3打包优化)

    Vue打包优化篇-CDN加速(vue3打包优化)

  • 神经网络模型之BP算法及实例分析(神经网络模型是干嘛的)

    神经网络模型之BP算法及实例分析(神经网络模型是干嘛的)

  • 长期未付款
  • 什么是进项税和进项税
  • 其他债权投资的交易费用计入哪里
  • 收到投资土地使用权的会计科目
  • 金税盘维护费抵税账务处理
  • 不动产在建工程是什么意思
  • 销售商品的成本计入什么科目
  • 人力资源服务费税收编码
  • 税法是否认可低税收
  • 北京房产税如何申报缴纳
  • 地税的发票
  • 未达到起征点销售额会计分录
  • 购房时收取的卖方费用
  • 变动成本主要包括
  • 应付账款少说明什么
  • 库存现金可以做中转科目嘛为什么
  • 代付给其他供应商货物尾款怎么记账
  • 转让房产缴纳增值税可以用留底税吗
  • 公司员工补充医疗保险方案
  • 如何进行网速测试设置
  • 供应商收费标准
  • c++ 库文件
  • 生产经营所得投资者减除费用季度申报填吗
  • 进项税年末需要结转么
  • php imagecreatetruecolor 创建高清和透明图片代码小结
  • 融资中的未确认利息
  • php array数组
  • 怎样做好固定资产管理工作
  • 支付本月物业费怎么做账
  • linux的系统配置文件
  • window7怎么开机
  • php数据库连接失败怎么办
  • php-cpp
  • 补充养老保险税前扣除标准与扣除比例
  • 特许权使用费包括哪些内容
  • 企业的生产环节
  • 银行转账手续费最高多少钱
  • 捆绑销售如何进行账务处理?
  • GPT-4:关于下一代人工智能模型的事实、谣言和期望
  • dd命令拷贝磁盘
  • discuz如何关闭站点
  • 没有残疾人就业保障金需要申报吗
  • mysql事务引擎
  • 织梦专题页模板
  • 帝国cms破解授权
  • mongodb $sum
  • 差旅费报销金额大于实际发生金额
  • 科目余额表该怎么填
  • 坏账核销的会计规定
  • 企业所得税不能税前扣除项目
  • 收到所得税退税现金流量选哪个
  • 无票收入是怎么算的
  • 最新出口退税申报需要哪些资料
  • 在建工程工伤保险延期费用计算
  • 应交增值税进项税额月底怎么处理
  • 计提短期借款利息分录
  • 土地增值税的预缴
  • 帮别人加工需要什么手续
  • sqlserver函数大全
  • 磁盘碎片 win7
  • centos的命令
  • mac wife
  • windows7的word
  • win10一年更新一次
  • 升级win10系统错误代码0x80072F8F
  • [置顶] 此外,车牌号:458143(懂得都懂[吃瓜])
  • 快速掌握阅读题的技巧
  • 如何用bat删除指定文件
  • python语言如何获取随机整数
  • html5翻页效果
  • 基于JAVASCRIPT实现的可视化工具是
  • node.js中使用文件流进行文件复制,首先需要创建一个
  • linux py
  • python第三方库的安装方法有哪些
  • java模拟浏览器点击
  • jquery提供了三种删除节点的方法,分别是什么
  • mongodb python
  • java教程
  • JQuery 设置checkbox值二次无效的解决方法
  • 济阳二七大集
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设