JavaScript-DOM(2)
事件
事件监听
什么是事件监听 ?
就是让程序检测是否有事件产生,一旦有事件触发,立即调用一个函数做出响应
事件的三要素是什么?
事件源 (谁被触发了)
事件类型 (用什么方式触发)
事件处理程序 (要做什么事情)
事件类型
1 | box.addEventListener('click',function(){ |
事件对象
什么是事件对象?
也是一个对象,这个对象里面有事件触发时的相关信息
环境对象
环境对象:指函数内部特殊的变量this ,它代表当前函数运行时所处的环境
粗略规则 :谁调用,this就是谁
回调函数
函数A 作为参数传递给函数B时,我们称函数A为回调函数
1 | function fn (){ |
事件流
- 事件流是指事件完整执行过程中的流动路径
事件捕获
- 从DOM的根元素开始去执行对应的事件(从外到里)
1 | DOM.addEventListener(事件类型,事件处理函数,是否使用捕获机制) |
第三个参数传true代表捕获阶段触发(很少使用)
传入false代表冒泡阶段触发,默认就是false
若使用L0事件监听,只有冒泡阶段,没有捕获
事件冒泡
- 当一个元素触发事件后,会依次向上调用同名事件(从里到外)
阻止冒泡
1 | 事件对象.stopPropagation() //阻止流动传播 (冒泡和捕获都可以) |
解绑事件
1 | 事件对象.addEventListener('click', fn) |
事件委托
- 事件委托是利用事件流的特征解决一些开发需求的知识技巧
优点:减少注册次数,可以提高程序性能
原理:利用事件冒泡的特点
给父元素注册事件,当我们触发子元素的时候,
会冒泡到父元素身上,从而触发父元素的事件
页面加载事件
1 | window.addEventListener('load',function(){ |
1 | document.addEventListener('DOMContentLoaded', function(){ |
页面滚动事件 *
1 | window.addEventListener('scroll',function(){ |
获取位置 可读写
页面尺寸事件
获取元素的宽高
会在窗口尺寸改变的时候触发事件:
1 | window.addEventListener('resize', function() { |
元素尺寸与位置
获取元素的自身宽高、包含元素自身设置的宽高、padding、border
得到的位置以带有定位的父级为准,如果没有按文档左上角
offsetWidth,offsetHeight,offsetTop (只读属性)
获取出来的是数值,方便计算
注意: 获取的是可视宽高, 如果盒子是隐藏的,获取的结果是0
1 | element.getBoundingClientRect() |
1 | html{ |
- Title: JavaScript-DOM(2)
- Author: WGenji
- Created at : 2024-08-26 13:51:51
- Updated at : 2024-08-26 13:51:51
- Link: https://redefine.ohevan.com/2024/08/26/2.javascript/js基础/4.DOM(2)/
- License: This work is licensed under CC BY-NC-SA 4.0.