第55天:简单冒泡方法原理

简介: 一、冒泡原理事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。

一、冒泡原理

事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。

顺序

E 6.0:

div -> body -> html -> document

其他浏览器:

div -> body -> html -> document -> window

不是所有的事件都能冒泡。以下事件不冒泡blurfocusloadunload

二、 阻止冒泡的方法

 标准浏览器  ie浏览器  

 w3c的方法是event.stopPropagation()       

 IE则是使用event.cancelBubble = true      

 兼容的写法:

  if(event && event.stopPropagation)

         {

             event.stopPropagation();  //  w3c 标准

         }

        else

        {

           event.cancelBubble = true;  // ie 678  ie浏览器

  }

三、判断当前对象

   火狐 谷歌 等   event.target.id   

   ie 678          event.srcElement.id    

   兼容性写法:  

  var targetId = event.target ? event.target.id : event.srcElement.id;

   targetId != "show"  

四、案例:点击空白处隐藏盒子

  这个案例就是说,一个盒子,点击除了自己之外的任何一个地方,就会隐藏。

 原理:   

      点击自己不算 

      点击空白处 就是点击  document  

 

 

案例代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>点击空白处隐藏盒子</title>
 6     <style>
 7         body{
 8             height: 2000px;
 9         }
10         #mask{
11             width: 100%;
12             height: 100%;
13             opacity:0.4;/*半透明  标准浏览器*/
14             filter: alpha(opacity=40);/*IE6半透明*/
15             background-color: black;
16             position: fixed;
17             top:0;
18             left:0;
19             display: none;
20         }
21         #show{
22             width: 300px;
23             height: 300px;
24             background-color: #fff;
25             position: fixed;
26             top: 50%;
27             left: 50%;
28             margin-top: -150px;
29             margin-left: -150px;
30             display: none;
31         }
32     </style>
33 </head>
34 <body>
35     <a href="javascript:;" id="login">注册</a>
36     <a href="javascript:;">登录</a>
37     <div id="mask"></div>
38     <div id="show"></div>
39 </body>
40 </html>
41 <script>
42     function $(id){return document.getElementById(id);}
43     var login=document.getElementById("login");
44     login.onclick=function(event){
45         $("mask").style.display="block";
46         $("show").style.display="block";
47         document.body.style.overflow="hidden";//不显示滚动条
48         //取消冒泡
49         var event=event||window.event;
50         if(event&&event.stopPropagation){
51             event.stopPropagation();
52         }else{
53             event.cancelBubble=true;
54         }
55 
56     }
57     document.onclick=function(event){
58         var event=event||window.event;
59         //alert(event.target.id);//返回的是点击的某个对象的id 标准
60         //alert(event.srcElement.id);//IE6 7 8
61         var targetId=event.target ? event.target.id : event.srcElement.id;//兼容性写法
62         if(targetId!="show"){//不等于当前点击的名字
63             $("mask").style.display="none";
64             $("show").style.display="none";
65             document.body.style.overflow="visible";//显示滚动条
66         }
67     }
68 </script>

 

相关文章
|
Java
树莓派安装java jdk8
树莓派安装java jdk8
254 5
|
安全 Unix Linux
Linux 下安装及配置heartbeat
Heartbeat 是一个基于Linux开源的,被广泛使用的高可用集群系统。主要包括心跳服务和资源接管两个高可用集群组件。
1366 0
|
监控 网络协议 网络架构
两块网卡实现多台机器共享上网
组建局域网内部网络,遇到的问题:购买电信的宽带,多人拨号肯定是不行的(貌似同时超过4台机器拨一个号就自动被断开网络了)。   使用一些软件共享上网觉得既然是人家开发的软件,不太放心里面加了什么代码会监控这边的网络,然后想通过一台机器做路由功能进行共享上网。
1093 0
|
5天前
|
人工智能 运维 安全
|
3天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
10天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
848 109
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
482 12