大家好,这个视频来说一下事件冒泡和事件补货,这里非常简单,就写了红绿蓝三个地方,红色的在最外面,绿色的在中间,蓝色的在最里面, 布局呢,就这样子,然后我们给这三个地方分别添加一个点击事件,来写一下 ga, 先把这几个对象获取一下哈, 绿色和蓝色两个 def 呢,也一样,获取到再分别给他们添加点击四键, 很简单,点击红色这个地方就让他输出红色,点击绿色和蓝色也是分别输出绿色和蓝色就可以了。好,来试一下,现在我把鼠标移到红色 的地方里面,点击输出的就是红色,这里没有问题哈。如果呢,现在我再要点击一下最里面的蓝色这个地方,大家觉得应该输出什么颜色呢?是蓝色吗?我们看一下。 哎,他把蓝色、绿色、红色都输出来了,并且是从内向外先输出蓝色,最后才输出红色的,对吧?这就说明我们点击蓝色这个地方,但实际上蓝绿红三个地方都有触发了点击事件。 这个呢,也好理解,因为他们属于一个欠套关系,最里面的被点击了,那这个范围他也属于外面的地,对吧?这个呢,还是比较简单的问题,就是这个事件执行的顺序,这里呢,我们要说一下事件流,事件执行哈,它其实是分为事件冒泡和事件 捕获的。来看一个图,非常简单,就看箭头的方向就可以了,事件从内向外执行呢,就是事件冒泡,事件默认也是处于冒泡的状态哈,就是呢,点击了最里面的地,先是最里面的这个地,它触发事件, 接着再冒泡到中间的地,最后呢才是最外面的这个地。触发事件反过来呢,就是事件捕获,这个呢,我们等一下再来说。 现在有个问题,比方说我点击了最里面蓝色的地,我就只是希望他触发事件,并不需要外面的地也触发事件,这样可不可以呢? 必须可以,对吧?不然这个冒泡有时候呢,会很烦人的,我们只需要通过事件对象,它里面呢有一个 stop propagation 这个方法,他就可以阻止事件 冒泡了。再来点一下最里面的地方啊,现在呢输出的就只是蓝色了,证明这个事件并没有冒泡到最外面这两个地方,对吧? ok, 刚刚说的都是冒泡阶段的,那事件怎么样才会处于补货阶段呢? 也就是我们点击了最里面的地,它第一时间它先触发这个事件的,反而是最外面的地方哈,事件由外向内执行呢,就是事件的捕获阶段。 竹子冒泡这里呢,先去除了其实事件监听,这个方法呢,它还有第三个参数默认呢,是否也就是呢,事件默认是出于冒泡流的, 如果要让事件处于补货流的话,我们就把第三个参数给它加起来,值为处好。刚才点击蓝色的地,输出的顺序呢,是蓝绿红,对吧?因为事件处于 冒泡流,所以呢,最里面的先执行了,现在改成了补货流话同样点击最里面的地,那他应该就反过来了,对吧? 没有问题哈,先输出的呢是最外面的红色,然后呢才是绿色,最后才是最里面的蓝色,这里都还好理解,那如果这三个 d 他有的是冒泡,有的是补货,那又应该怎样执行呢?比方现在我让中间绿色的地方哈,让他处于补货流,另外两个呢,处于冒泡,那事件的执行顺序又应该怎样呢?这个呢,其实也不难,大家只要记住哈,补货的优先级呢,会比冒泡高, 也就是先执行补货的,剩下冒泡的呢,他就按照冒泡的顺序来执行就是了,所以这里应该会先输出绿色。剩下两个呢,冒泡的就按照冒泡的 顺序哈,先输出最里面的蓝色,最后呢才是外面的红色。顺序呢,应该就是绿色,蓝色,红色,我们来看一下, 点击一下哈,哎,他的顺序呢就是绿色,蓝色,红色。好,我们稍微来改一下哈,让红色和蓝色呢出于补货,绿色呢让他出于冒泡,那现在的执行顺序应该是怎样呢? 绿色的是出于冒泡的,对吧?所以呢,绿色肯定是最后输出来的。再来看一下补货,补货阶段呢,最外面的先执行,所以呢先输出的就是红色,其次呢是蓝色,最后才输出绿色。来看一下 没问题哈,红蓝绿,这个大家可能用的少一点哈,基本都是让事件处于冒泡流,然后阻止事件冒泡 用的多一点,但是如果做一些复杂的事件交互呢,也是有可能用到这种冒泡和补货混着用的,用的少就作为基本的了解就可以了。好,下个视频呢,我们来说一下事件委托,这个视频就先到这里,感谢大家的收看。
粉丝1.9万获赞14.1万

大家好啊,今天咱们来聊聊前端开发里特别重要的一个概念,事件流模型。你是不是也好奇,当我们点击一个按钮的时候,浏览器到底是怎么处理这个点击事件的呢?其实啊,事件流模型就是 d o m 事件的传播规则体系, 他定义了事件触发后在 dom 术中的传播路径和执行顺序。早年间,浏览器界可是有两大门派的,一个是 i e 的 事件冒泡模型,就像水里冒泡一样,事件从触发的元素开始慢慢向上传播,到副元素,直到最顶层。 另一个是网警的事件捕获模型,正好相反,他是自上而下的从最顶层开始一路向下捕获,直到找到触发事件的那个元素。 不过现在好了, w 三 c 制定了统一的标准,也就是 dom 二级事件模型,他把这两种模型融合到了一起,形成了捕获、目标、冒泡三个阶段的流程。 简单说就是事件先从顶层往下找目标,找到目标元素后执行,然后再从目标元素往上冒泡。 那我们怎么控制事件在哪个阶段执行呢?现代浏览器给我们提供了 adevilire 方法,它的第三个参数如果是处,就表示在捕获阶段执行事件处理函数,如果是 false, 那 就是在冒泡阶段执行。 这个事件流模型有什么用呢?用处可大了。比如我们常用的事件委托就是依赖冒泡模型实现的,通过给复元素绑定事件来处理紫元素的事件,既节省性能又方便管理。 而像一些局的事件拦截,可能就需要用到捕获模型了。当然,我们还可以通过 stop procreate 方法来阻止事件继续传播,非常灵活。 怎么样,现在对事件流模型是不是清楚多了?下次写事件处理的时候不妨想想他在哪个阶段执行哦。你在项目中有没有遇到过需要处理事件传播的情况呢?

我们来讲一下这个 g s 事件冒泡与事件补货。呃,先来了解一个定义啊,事件流。什么是事件流?在呃, javascript 中,我们将事件发生的顺序成为事件流。 呃,意思啊,其实就是当我们触发某个事件时,会发生了一系列的连锁反应啊,就是个事件流。在一个标准的事件模型中啊,事件流分为三个阶段,事件捕获阶段、处于冒泡。呃,处于目标阶段和事件冒泡阶段。 那什么是事件捕获呢?事件捕获是由微软提出的,当鼠标点击或触发盗墓事件时,被触发盗墓事件的这个元素叫做事事件源啊,浏览器会从根结点向事件员由外向内啊进行事件传播。就是我们点击啊,点击一个元元素的时候,从 外边是 h t, m l 和那包底 window。 刀客,刀客们啊,逐渐向里边找着你这个,呃呃,这个,这个圆,实线圆啊,实线圆。也许我们点这,这是一个 h 二的标, h 三的标签,我们就落到这 h 三的标签上。 那什么是事件冒泡呢?呃,是由网警提出的,这个网警很公司,很有意思啊,可以,我个人认为网警是做浏览器的祖师爷。 嗯,有空了大家可以去。嗯,查一下啊,查一下他的相关资料。事件冒泡呢,是由网警提出的,与事件补货正好相反啊,他是事件补货,是由外向内。是事件冒泡呢,是 从原事件啊,原事件原像根结点由外向内,由内向外进行传播的啊。但是我们点了以后,我们点了这个 h 三或者 h 四标签以后,他是不断的向外外边啊,然后会断到包底了,刀客们的老根的啊,这个是 时间冒泡。好,我们这也写,我也准备了个例子啊,咱们大家看一下啊,我这有一个按钮,然后监听了这个按钮的点击事件,监听了 body 的点击事件,监听了这个 doctment 的点击的事件,还有 window。 啊,我们来看一下 啊,刷新一下啊,呃,点击按钮,我们这是按顺序啊,这是事件冒泡的顺序啊。第一个是,呃,先是点击的按钮,然后是 body, 然后 dottman, 最后是轮导。啊,那如果我们怎么样改成的事事件呃,捕获呢? 我们啊,在这个监听函数后面还有个第三个参数,默认是 clous 啊,我们打开了,把它改成数的话,就是就是监听这个,呃,事先补货了啊,好,我们再来试一下啊, 刷新一下,点击,然后他是从从外啊,从外,从 window, document, body 和,嗯, button 啊,从外向内去。这个,嗯, 这就是个事事件捕获。 好,关于这个世界冒泡与补货,我们就讲到这里,下课。

我们来讲一下这个 gs 事件冒泡与事件捕获。嗯,先来了解一个定义啊,事件流。什么是事件流?在嗯, java script 中,我们将事件发生的顺序称为事件流。 呃,意思啊,其实就是当我们触发某个事件时,会发生了一系列的连锁反应啊,就是个事件流。 在一个标准的事件模型中啊,事件流分为三个阶段,事件捕获阶段、处于冒泡,处于目标阶段和事件冒泡阶段。那什么是事件捕获呢?事件捕获是由微软提出的, 当鼠标点击或触发盗墓事件时,被触发盗墓事件的这个元素叫做事事件源啊, 浏览器会从根节点向事件源由外向内啊进行事件传播。就是我们点击啊,点击一个原元素的时候,从外边是 html 和包底文档 dunk dunkman 啊,逐渐向里边找着你这个, 呃,这个,这个原事件源啊,事件源。也许我们点这,这是一个 h 二的标, h 三的标签,我们最后落到这 h 三标签上。 那什么是事件冒泡呢?呃,是由网警提出的,这个网警和公司很有意思啊,可以,我个人认为网警是做浏览器的祖师爷。 嗯,有空了大家可以去查一下啊,查一下他的相关资料。事件冒泡呢,是由网警提出的,与事件捕获正好相反,他是事件捕获,是由外向内。是事件冒泡呢,是 从源事件啊,源事件源向更结点,由外向内,阳内向外进行传播的啊。但是我们点了以后,我们点了这个 h 三或者 h 四标签以后,他是不断的向外外边啊,然后扩散到包底了, dong 们的了,温到了啊, 这就是时间冒泡。好,我们这也写,我也准备了个例子啊,咱们大家看一下啊,我这有一个按钮, 然后我监听了这个按钮的点击事件,监听了包底的点击事件,监听了这个 document 的 点击的事件,还有文档。啊,我们来看一下 啊,刷新一下啊。呃,点击按钮,我们这是按顺序啊,这是事件冒泡的顺序啊。第一个是,呃,先是点击的按钮,然后是包底,然后 document, 最后是文档。啊, 那如果我们怎么样改成的是事件呃,捕获呢?我们啊,在这个监听函数后边还有个第三个参数, 默认是 false 啊,我们打开它,把它改成 true 的 话,就是就是监听这个,呃,事件捕获了啊, 好,我们再来试一下啊,刷新一下,点击,然后它是从从外啊,从外,从 window、 document, body 和,嗯, button 啊,从外向内去。这个,嗯,这就是个事,事件捕获啊。 好,关于这个事件冒泡与捕获,我们就讲到这里,下课。

刚刚面试了一个四年前端,简历上写着精通前端性能优化。我问用户在地址栏输入 url 到页面完全可交互,中间发生了什么? 每个阶段怎么优化?他回答, dns 解析发请求,拿到 html 解析,构建 dom 树,加载 css 和 js 渲染页面。 我追问具体什么是关键?渲染路径? c s s 和 g s 的 加载执行?如何阻滞渲染?重排重绘合成有什么区别? 如何避免布局抖动?浏览器是如何处理事件和动画的?它提到了 dumb content loaded。 很多四年的开发者只知渲染流程的大概,却不理解浏览器底层的渲染机制和优化原理。面试到此结束了四年还是有点水分在这其实是一个很多终极开发都会踩到的坑。 如果这道题目你也不会回答的话,我整理了让大场 hr 沉默的必考题库,包含 vo 灵魂拷问, react 高频陷阱, js 十连问点个赞,评论区甩六六六,打包带走 nice, 系统性的掌握浏览器渲染原理,需要打赢这四场战役。第一战役,导航与资源加载导航阶段, dns 解析,域名查找优化策略, tcp 连接三次握手, tls 协商 h t t p 请求请求发送服务器处理响应返回资源加载优化关键资源识别,哪些资源组色?首次渲染 预加载策略, preload prefetch 预连接 precan 提前建立连接 h t t p 二、多路复用服务器推送第二战役,解析与渲染流水线 h t l m 解析与 d o m 构建自节流自扶 token 节点 d o m。 数 遇到同步脚本暂停解析下载并执行。 gs 遇到 c s s。 不 阻色 d o m 构建,但阻色渲染 c s s。 解析与 c s s o m 构建样式计算层叠继承优先级计算渲染阻色 c s s o m。 未完成前页面不会渲染。 javascript 执行 执行上下文调用战事件循环长任务对渲染的阻设。渲染术构建 d o m 术加 c s s o m 术,等于渲染术, 只包含可见元素。第三战意,布局绘制与合成。布局计算每个元素的大小、位置,布局变化,触发重排,触发场景窗口。 rayside d o m 操作样式修改,绘制填充像素、颜色、边框、阴影、文本 绘制分层,将页面分成多个图层,独立绘制、重绘、触发颜色、背景等,不影响布局的修改合成,将各个图层合并成最终图像。 gpu 加速。 transformer, opacity 等属性在合成层处理,跳过布局和绘制 提升合成层 will change transformer, opacity 等属性在合成层处理,跳过布局和绘制 提升合成层 will change transformer translate z。 第四战役交互与动画优化事件处理,事件捕获与冒泡、事件委托优化内存防抖截流控制执行频率、动画性能。 request animation frame 与浏览器绘图同步,避免引起重排的动画属性。 使用 web animations api 或 css 动画输入延迟优化,减少主线程任务。使用 webworkers 处理计算密集型任务,被动事件监听器优化滚动。这个就叫专业。 这道题考察的是对浏览器底层机制的理解深度是从表象优化走向本质优化的分水岭,也是四年前端深入技术深度的必修课。最后,你在项目中遇到过最棘手的渲染性能问题是什么?是怎么定位和解决的?

我发现最近又有许多小伙伴入坑嘎了盖幕这期视频来为大家讲解嘎了盖幕一条龙的下载教程,包含修改后缀,下载解压软件以及如何解压文件等。看完这期视频再学不会我吃 视频中的资源都是提前下载好的,因为我怕页面泄露会违规,专门做了黑屏讲解,不懂的话也可以看我主页进行交流。现在我们直接开始。 首先我们要下载解压软件, windows 默认的解压软件是解压不了这些文件的,大家可以打开我们自带的浏览器,在羽兔网下载我们的解压软件 w i n r a r 这个网站有许多实用的工具都可以下载解压软件。下载完成后,我们要解锁满血版的小红车。首先我们打开 steam, 随便找一款游戏,加入购物车,查看我的购物车, 注意加速器可以挂香港,我们点击右边的货币,选择香港。 接着我们点击账户,打开商店偏好,把剩下四个未勾选的勾选上,接着返回上一页,点回中国。 有些文件是需要改后缀的,但是大家根本找不到后缀怎么办?这是因为 windows 十一自带是不显示后缀的,我们要先打开控制面板,找到文件资源管理选项,点击查看,翻下去, 把隐藏已知文件类型的扩展名删掉,我这边已经删掉了,然后点击确定就可以了哦,这样我们的后缀就显示出来了。首先我们打开文件, 右击重命名,将作者后面乱改的后缀改成 z i p 确定。接着右击使用我们的解压软件进行解压, 打开我们解压好的软件,有些作者他设了两重解压,我们只需再进行重命名,改成 vip, 接着进行解压, 输入作者提前给我们喂好的密码,解压完成后,我们的游戏就在这个解压包中,但是我们想要快速启动怎么办?我们只需要右击游戏 显示更多选项,创建快捷方式,将这个快捷方式拖入桌面即可。要是作者有多个分卷的话,会有两种情况,第一种情况就是 所有的分卷他都需要进行解压,我们改好后缀以后,左机框选右机,全部解压就可以了。还有一种是第一号文件是解压包,其他文件无需解压,那我们只需要把第一个文件进行解压, 解压完成后,我们直接就可以进行游戏了,制作不易,如果有用就点个赞再走吧!