js 鼠标事件总结 mouseover/mouseout 与mouseenter/mouseleave 傻傻分不清楚?

news/2024/5/8 22:01:26/文章来源:https://blog.csdn.net/u014105739/article/details/127321623

1. 鼠标事件

mouseenter mouseleave (一对事件 鼠标的进入和离开) 不支持冒泡

mouseenter:鼠标从元素外部移到元素内部时触发。

 mouseleave:鼠标从元素内部移到元素外部时触发。

 这两个事件 a) 不冒泡,b) 鼠标经过子元素时不触发父元素的该事件

 mouseover mouseout (一对事件 鼠标的移入和移出 , 支持冒泡事件(所以子元素的该事件默认会触发父元素上的该事件;除非阻止冒泡);

mouseover:鼠标从元素外部移到元素内部时触发。

  mouseout:鼠标从元素内部移到元素外部时触发。

这两个事件 a)冒泡,b) 鼠标经过子元素时也触发父元素的该事件

ex: 比如鼠标从父元素移入到子元素会触发父元素的mouseout 触发子元素的mouseover 又因为冒泡会触发父元素的mouseover; 同时也是进入子元素,所以会触发 子元素的mouseenter;

但是此时鼠标并未离开父元素; 所以不会触发父元素的mouseleave  ) 
 总结: 父mouseout -> 子mouseover -> 父mouseover -> 子mouseenter

 鼠标从子元素移出; 移入父元素 : 首先会触发子元素的mouseout , 因为冒泡所以触发父元素的mouseout; 又因为离开了子元素 所以触发子元素的mouseleave; 移入并进入父元素, 触发 父元素的mouseover  
总结: 子mouseout -> 父mouseout -> 子mouseleave -> 父mouseover

 mousedown (鼠标左右任意键按下)  默认冒泡

 mmouseup( 鼠标左右任意键抬起) 默认冒泡

 click (鼠标左键按下 mousedown -> mouseup -> click) 默认冒泡

 dblclick(注意,是 dbl)  默认冒泡

 mousemove 是如果鼠标移动操作实时响应事件, 比如鼠标拖动一个元素 默认冒泡

 mousewheel  鼠标滚轮事件

2. 鼠标事件代码

<style>* {margin: 0;padding: 0;}div {/* position: relative; */margin-top: 50px;margin-left: 50px;width: 300px;height: 400px;display: flex;flex-wrap: wrap;background-color: aquamarine;}a {/* position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%); */display: block;width: 100px;height: 100px;border: 5px solid #000;padding: 5px;background-color: brown;margin-left: 50px;display: flex;}.a1 {margin-top: 40px;}.a2 {margin-top: 70px;background-color: aquamarine;}em {position: absolute;top: 5000px;}
</style><body><div onmouseover="mouseoverfather()" onmouseout="mouseoutfather()" onmouseenter="mouseenterfather()"onmouseleave="mouseleavefather()" onmousedown="mousedownfather()"onmouseup="mouseupfather()"onmousemove="mousemovefather()"onclick="mouseclickfather()">father<a class="a1" href="javascript:;" onmouseover="mouseoverson()" onmouseout="mouseoutson()"onmouseenter="mouseenterson()" onmouseleave="mouseleaveson()"onmousedown="mousedownson1()"onmouseup="mouseupson1()"onclick="mouseclickson1()"onmousemove="mousemoveson1()">son1</a><a class="a2" href="javascript:;" onmouseover="mouseoverson2()" onmouseout="mouseoutson2()"onmouseenter="mouseenterson2()" onmouseleave="mouseleaveson2()">son2</a></div>
</body>
<script>function mouseoverfather() {console.log('父元素触发mouseoverfather')}function mouseoutfather() {console.log('父元素触发mouseoutfather')}function mouseenterfather() {console.log('父元素触发mouseenterfather')}function mouseleavefather() {console.log('父元素触发mouseleavefather')}//  父元素鼠标点击事件====================function mousedownfather() {console.log('父元素触发mousedownfather')}function mouseupfather() {console.log('父元素触发mouseupfather')}function mouseclickfather() {console.log('父元素触发mouseclickfather')}//  父元素鼠标点击事件====================function mousemovefather() { // 滑动console.log('父元素触发mousemovefather')}function mouseoverson() {console.log('11子元素触发mouseoverson')}function mouseoutson() {console.log('11子元素触发mouseoutson')}function mouseenterson() {console.log('11子元素触发mouseenterson')}//  鼠标点击事件====================function mouseleaveson() {console.log('11子元素触发mouseleaveson')}//  子元素鼠标点击事件====================  //  11子元素触发mousedownson1// mouse.html:126 11子元素触发mouseupson1// mouse.html:129 11子元素触发mouseclickson1//  因为冒泡 同时也会触发父元素的mousedown  mouseup clickfunction mousedownson1() {console.log('11子元素触发mousedownson1')}function mouseupson1() {console.log('11子元素触发mouseupson1')}function mouseclickson1() {console.log('11子元素触发mouseclickson1')}// 子元素鼠标点击事件====================function mousemoveson1(){console.log('11子元素触发mousemoveson1')}function mouseoverson2() {console.log('22子元素触发mouseoverson2')}function mouseoutson2() {console.log('22子元素触发mouseoutson2')}function mouseenterson2() {console.log('22子元素触发mouseenterson2')}function mouseleaveson2() {console.log('22子元素触发mouseleaveson2')}</script>

     // 对于鼠标的移进移出
    //  1:father 触发 mouseover 和 mouseenter;
    // 打印:  
    // 父元素触发mouseoverfather 
    // 父元素触发mouseenterfather

    //  2: father 触发 mouseover(因为冒泡) 和 mouseenter; son1 触发mouseover 和 mouseenter
    //  打印: 
    // 父元素触发mouseoutfather 
    // 11子元素触发mouseoverson
    // 父元素触发mouseoverfather 
    // 11子元素触发mouseenterson
    
    //  3. father 触发mouseout(因为冒泡) 和 mouseover;son1 触发mouseout 和 mouseleave 
    //  打印: 
    // 11子元素触发mouseoutson 
    // 父元素触发mouseoutfather 
    // 11子元素触发mouseleaveson
    // 父元素触发mouseoverfather 

    //  4 同理2 5同理3

    //  6: father 触发  mouseout 和 mouseleave
    // 打印:  
    // 父元素触发mouseoutfather 
    // 父元素触发mouseleavefather
 

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

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

相关文章

502网站速度慢的原因

困扰了几天的问题&#xff0c;php脚本执行时间也不慢&#xff0c;fastcgi进程也还有很多&#xff0c;但是网站打开特别慢。原因就是网络带宽给跑满了。

电影网站站架构(第一版)

有时间写一下公司用6台服务器搭建的一个电影站点小集群架构。 总共6台服务器&#xff0c;大体搭建如下 后期需要做的几个优化 1.准备用LVSKeepalived解决单点故障 2.使用varnish缓存一部分请求 3.redis数据写入到队列里面&#xff0c;进行异步插库操作 4.使用nagios,zabbi…

webbench网站压力测试结果

使用webbench做压力测试结果&#xff1a; 经过压力测试&#xff0c;60秒钟最多只能接受600并发。后面nginx就会出现502报错了。是由于5m带宽给跑满了。后期还得增加带宽。

关于网站负载均衡的思考

一、基本介绍 从之前接触网站负载均衡到现在&#xff0c;我发现在很多东西其实都是相通的&#xff0c;就比如说目前在研究OSI七层模型的时候&#xff0c;再次去读网关的概念的时候&#xff0c;意外收获了网关服务器的概念&#xff0c;对于这个一般是用在游戏开发的架构设计中会…

加速网站静态资源访问的方法

一、采用CDN 借助一张图来说明下&#xff0c;其实CDN的概念大致可以理解为在每个地区建立一个网络中心&#xff0c;这样做的好处就是用户访问速度加快了&#xff0c;不然的话就比如说你只有一台服务器在北京&#xff0c;而我要在全国各地去访问&#xff0c;这样的话信道传输速…

python爬取网站图片和os模块简介

嗯&#xff0c;最近帮了一个网友做了下图片下载分类&#xff0c;这里记录下来分享一下&#xff1a; 首先了解下os模块的语法 判断文件是否存在 import os os.path.exists(test_file.txt) #Trueos.path.exists(no_exist_file.txt) #False判断文件夹是否存在 import os os.path…

一元建站-基于函数计算 + wordpress 构建 serverless 网站

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力&#xff0c; 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相…

link rel=alternate网站换肤功能最佳实现

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p8512 本文可全文转载&#xff0c;个人网站无需授权&#xff0c;只要保留原作者、出处以及文中链接即可&#xff0c;任何网站均可摘要聚合&#xff0c;商用请联系授权。 一、大多数开发人员的实现 大多数前端开发…

nodejs 网站架构

有兴趣的可以下载

_004_EclipseOperation_Eclipse将一段代码抽取封装

来自https://www.jb51.net/softjc/581893.html&#xff0c;感谢作者的无私分享。 1、使用Eclipse打开已有的项目代码或者新建一个测试项目代码。将需要抽取封装方法的代码块选中&#xff0c;右击选择Refactor&#xff0c;再选择Extract Method&#xff0c;快捷键&#xff08;A…

_006_EclipseOperation_创建eclipse新的workspace并设置workspace共享配置

声明&#xff1a;该博文引自http://www.cnblogs.com/whycxb/p/4848695.html 一&#xff1a;创建新的workspace 1、File——Switch Workspace——Other 2、修改workspace路径和名称 3、修改后如下&#xff1a; 4、点击OK按钮后&#xff0c;eclipse自动重启 同时&#xff0c;相…

记一次小网站渗透过程

一、序言 记录某一次无意点开的一个小网站的渗透过程&#xff0c;幸运的是搭建平台是phpstudy&#xff0c;cms是beecms&#xff0c;beecms有通用漏洞&#xff0c;然后去网上找了资料&#xff0c;成功getshell并获取服务器权限。 二、渗透过程 无意点开一个网站&#xff0c;发…

_031_EclipseOperation_Eclipse修改导航栏的颜色

以上是个人随性配置&#xff0c;某些项的设置不懂&#xff0c;结果如下&#xff1a;

网站跨站点单点登录

昨天和几位朋友探讨到了这个话题&#xff0c;发现虽然单点登录&#xff0c;或者叫做独立的passport登录虽然已经有了很多实现方法&#xff0c;但是能真正了解并实现的人却并不太多&#xff0c;所以些下此文&#xff0c;希望从原理到实现&#xff0c;能让大家了解的多一些 至于什…

如何添加网站的浏览器 ico 图标

什么是网站 ICO 图标&#xff1f; 打开微软、百度等网站后看到浏览器的标题栏、地址栏&#xff0c;多浏览器的标签上都显示了一个小图标&#xff0c;如 &#xff0c;这里说的就是这个东东。 如何制作 ICO 图标&#xff1f; 这里使用最简单的办法。因为 ico 格式图片比较特殊&a…

一键SSH宝塔/Shell原生安装LNMP(Centos7.5 + Nginx + MySQL +PHP)+thinkphp/Wordpress搭建网站(附源码)

可以使用宝塔工具搭建&#xff0c;也可以使用我下面的教程进行搭建。 一、宝塔工具搭建具体操作&#xff1a; ssh登录centos服务器&#xff0c;下载安装宝塔工具centos版本&#xff0c;一键安装LNMP环境。大概需要10-20分钟吧&#xff1b;安装完成后进入应用市场&#xff0c;选…

怎么做好企业网站关键词优化

一、关键词的选择 1、企业品牌词 品牌关键词非常重要&#xff0c;可以说如果不重视品牌词部署&#xff0c;会影响到网络营销效果。品牌关键词是一个网站的名称&#xff0c;具备唯一性&#xff0c;方便用户记忆。加上消费者对品牌的认知度是非常高&#xff0c;具备品牌的网站能…

【网站推荐】Event Registry‘s News

【网站推荐】Event Registrys News 公众号&#xff1a; ChallengeHub 1、简介 利用AI的力量将新闻内容转化为解释性的分析报告。Event Registry是世界领先的新闻情报平台&#xff0c;使组织能够跟踪世界事件并分析其影响。 Event Registrys News 官方网站&#xff1a;https:/…

在线教育专业建站工具 EduWind ,源码下载,源码分享网整理

在线教育专业建站工具 EduWind &#xff0c;源码下载&#xff0c; Eduwind是由北京水木信步网络科技有限公司开发的网校服务&#xff0c;公司位于清华科技园。目前&#xff0c;EduWind的产品系列包括以下两大版本&#xff1a; EduWind网校开源软件&#xff1b; EduWind网校Saa…