位置: 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)

  • 唯品会怎么自寄退货(唯品会怎么寄快递)

    唯品会怎么自寄退货(唯品会怎么寄快递)

  • 怎么通过QQ号查微信号(怎么通过qq号查询对方所在地)

    怎么通过QQ号查微信号(怎么通过qq号查询对方所在地)

  • ghz是多少hz(15ghz是多少hz)

    ghz是多少hz(15ghz是多少hz)

  • 11截图快捷键(11截图快捷键电脑那三个键)

    11截图快捷键(11截图快捷键电脑那三个键)

  • 景深大是清晰还是模糊(景深大是背景实还是虚)

    景深大是清晰还是模糊(景深大是背景实还是虚)

  • 优酷账号分享不合法,ip上限怎么解决(优酷账号分享不合法 ip上线什么意思)

    优酷账号分享不合法,ip上限怎么解决(优酷账号分享不合法 ip上线什么意思)

  • ipad10.2尺寸是多少厘米(ipad10.2英寸是多大)

    ipad10.2尺寸是多少厘米(ipad10.2英寸是多大)

  • 饿了么头像怎么改不了(饿了么头像怎么查看大图)

    饿了么头像怎么改不了(饿了么头像怎么查看大图)

  • 淘宝id是昵称还是会员名(淘宝id是淘宝昵称还是淘宝账号)

    淘宝id是昵称还是会员名(淘宝id是淘宝昵称还是淘宝账号)

  • 支付宝性别怎么修改(支付宝性别怎么隐藏好友)

    支付宝性别怎么修改(支付宝性别怎么隐藏好友)

  • 移动4G怎么升5G(移动4G怎么升级5G套餐)

    移动4G怎么升5G(移动4G怎么升级5G套餐)

  • 怎么关闭qq消息通知(怎么关闭qq消息漫游安全验证)

    怎么关闭qq消息通知(怎么关闭qq消息漫游安全验证)

  • 快手pk受限制怎么回事(快手pk受限制怎么办)

    快手pk受限制怎么回事(快手pk受限制怎么办)

  • 华为手机快应用是什么意思(华为手机快应用怎么删除)

    华为手机快应用是什么意思(华为手机快应用怎么删除)

  • 华为怎么恢复杂志锁屏(华为怎样恢复)

    华为怎么恢复杂志锁屏(华为怎样恢复)

  • 华为手机震动频率怎么调(华为手机震动功能)

    华为手机震动频率怎么调(华为手机震动功能)

  • oppo怎么找到手机通用密码(OPPO怎么找到手机管家)

    oppo怎么找到手机通用密码(OPPO怎么找到手机管家)

  • ps4如何开机(ps4如何开机不响声)

    ps4如何开机(ps4如何开机不响声)

  • 亲情账号可以看到订单吗(亲情账号可以看健康码吗)

    亲情账号可以看到订单吗(亲情账号可以看健康码吗)

  • applewatch强制重置(applewatch强制重启白苹果变红苹果)

    applewatch强制重置(applewatch强制重启白苹果变红苹果)

  • uc隐藏相册在哪里(uc隐藏相册在哪里打开)

    uc隐藏相册在哪里(uc隐藏相册在哪里打开)

  • alp一al00是什么型号(alp-al00是华为什么型号)

    alp一al00是什么型号(alp-al00是华为什么型号)

  • 云视听自动续费怎么关(云视听自动续费为什么到期不扣费过了几天后才扣费)

    云视听自动续费怎么关(云视听自动续费为什么到期不扣费过了几天后才扣费)

  • 王者荣耀电脑版怎么能控制技能方向?(王者荣耀电脑版怎么键盘操作)

    王者荣耀电脑版怎么能控制技能方向?(王者荣耀电脑版怎么键盘操作)

  • java非公平锁如何理解(java公平锁有哪些)

    java非公平锁如何理解(java公平锁有哪些)

  • 什么情况下不能做近视激光手术
  • 公司账户钱能全部转走吗
  • 计提增值税及附加税费怎么算
  • 固定资产的原值是含税价?
  • 发票报送失败怎么弄
  • 银行贷款减值准备转回处理
  • 建筑企业预收款开具不征税发票为什么要预缴
  • 房屋出租需要缴纳个人所得税吗
  • 怎么开具商业承兑票据
  • 年底没计提年终奖,下一年发放要怎么做
  • 现金货款退回如何做会计分录呢?
  • 利润的计算方法数学
  • 房屋租赁交税能补交吗
  • 去税局代开增值税专票需要什么资料?
  • 员工工作服计入劳保费吗
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 当月发的奖金怎么扣个税
  • 发票过期未认证可以用吗
  • 如果辞职了,能一次性拿到钱吗?
  • 无形资产有使用期限
  • 餐饮定额发票怎么征税
  • 财务做哪些工作
  • 增值税申报表附表二填表说明
  • 增值税及附加税费减免一览表
  • 购买收益权如何缴税
  • 收回已核销的坏账并入账是什么意思
  • php中class用法
  • 报关代理费是什么
  • 一台电脑两个显示器显示不一样的内容
  • 摊余成本计量的金融资产账面价值
  • php数组函数输出《咏雪》里有多少"片"字
  • 我老公有外遇了,我很爱他,我该怎么办
  • 办公室装修入账
  • layui 日期控件赋值
  • 移动端h5页面适配
  • 生产成本制造费用怎么算
  • 小规模纳税人免税额度是多少
  • 金银首饰以旧换新消费税怎么算
  • 一天看小说十几个小时的人
  • php写excel
  • uniapp实战视频教程
  • php的foreach
  • 集团公司内部结算
  • 研发费用税前加计扣除金额怎么算
  • 研发支出是资产类会计科目吗
  • 分公司利润怎么结转给总公司需要交税
  • 智能手机登陆信息怎么删除
  • 进料加工保税是什么意思
  • 企业做账会计分录流程
  • 报关单保费率怎么填
  • 免征增值税政策的政策有哪些?
  • 建筑劳务公司何去何从
  • 息税前利润的计算公式中的利息费用
  • sqlldr并发
  • 应收账款逾期什么意思
  • 印花税记入哪个费用
  • 装载机如何计提折旧费用
  • 发票上有银行流水号吗
  • 小规模纳税企业在应交增值税明细科目
  • 工资分摊计提分配方式?
  • 人工安装费是几个点税税率
  • 一般纳税人网上申报流程
  • 法人代表可以兼任出纳吗
  • 坏账准备的会计核算
  • mysql外键怎么写
  • 总结sql执行进展怎么写
  • mysql数据库主从数据不一致
  • 阿里云ecs centos sysctl
  • Windows Server 2008关闭闲置状态的IDE通道
  • win7系统安装程序无法创建新的系统分区
  • windows无法访问\\192.168.1.104
  • mac怎么找自己下载的应用
  • honey contil
  • python中的is和==的区别
  • jquery checkbox的相关操作总结
  • python文件描述符
  • ActivityManagerService (三)
  • 签订税务三方协议
  • 关于涉访涉诉终结的规定
  • 契税计算器在线计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设