JavaScript知识点笔记(四)

Bom概述:

BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容与浏览器窗口进行交互的对象,其核心对象是windows。
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法和属性。

Windows对象常见的事件

1、窗口加载事件
window.onload = function() {}
或者
window.addEventListener(“load”,function() {});
Window.onload是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、css文件等),就调用的处理函数
注意:
①有了window.onload就可以把js代码写到页面元素的上方,因为onload是等页面内容全部加载完毕,再去执行处理函数。
②window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个window.onload为准。
③如果使用addEventListener则没有限制

document.addEventListener(‘DOMContentLoaded’,function() {})
DOMContentLoaded事件触发,仅当DOM加载完成,不包括样式表,图片,flash等等。Ie9以上支持

2、调整窗口大小事件
window.onresize = function() {}
window.addEventListener(“resize”,function() {});
window.onresize是调整窗口大小加载事件,当触发时就调用的处理函数。
注意:
①只要窗口大小发生像素变化,就会触发这个事件。
②利用这个事件完成响应式布局,window.innerWidth当前屏幕的宽度

定时器

1、setTimeout()定时器
语法规范:window.setTimeout(调用函数,延迟时间);
①这个window在调用的时候可以省略
②这个延迟时间单位是毫秒 可以省略,如果省略默认是0
③这个调用函数可以直接写函数 还可以写函数名 还可以写 ’函数名()’
④可以给定时器添加标识符
setTimeout()方法延时时间到了,就去调用这个回调函数,只调用一次。
注意:
setTimeout()这个函数称为回调函数 callback
普通函数是按照代码顺序直接调用,而这个函数,需要等待时间,时间到了才去调用这个函数,因此称为回调函数。
比如:element.onclick = function() {} 或者 element.addEventListener(“click”,fn)里面的函数也是回调函数。

停止setTimeout()定时器
window.clearTimeout(timeout ID)
注意:
①window可以省略
②里面的参数就是定时器的标识符

2、setInterval()定时器
语法规范:winodw.setInterval(调用函数,延时时间]);
setInterval()方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。
注意:
①这个window在调用的时候可以省略
②这个间隔的时间单位是毫秒 可以省略,如果省略默认是0
③这个调用函数可以直接写函数 还可以写函数名 还可以写 ’函数名()’
④可以给定时器添加标识符

停止setInterval()定时器
window.clearInterval(intervalID);
注意:
①window可以省略
②里面的参数就是定时器的标识符

this指向问题

一般情况下this的最终指向的是那个调用它的对象
①全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window)
②方法调用中谁调用this指向谁
③构造函数中this指向构造函数的实例

location对象的方法

location对象方法返回值
location.assign()跟href一样,可以跳转页面(也称为重定向页面)
location.replace()替换当前页面,因为不记录历史,所以不能后退页面
location.reload()重新加载页面,相当于刷新按钮或者f5如果参数为true强制刷新ctrl+f5

history对象

window对象给我们提供了一个history对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的URL。

history对象作用
back()可以后退功能
forward()前进功能
go(参数)前进后退功能 参数如果是1前进1个页面 如果是-1后退1个页面

元素偏移量offset系列

offset概述(该属性只能获取值不能赋值,与之相对应的是style,其可以获取值和赋值)
使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等
获得元素距离带有定位父元素的位置
获得元素自身的大小(宽度高度)
注意:返回的数值都不带单位
offset系列常用属性:

offset系列属性作用
element.offsetParent返回作为该元素带定位的父级元素 如果父级都没有定位则返回body
element.offsetTop返回元素相对带有定位父元素上方的偏移
element.offsetLeft返回元素相对带有定位父元素左边框的偏移
element.offsetWidth返回自身包括padding、边框、内容区的宽度,返回数值不带单位
element.offsetHeight返回自身包括padding、边框、内容区的宽度,返回数值不带单位

元素可视区client系列

client就是客户端,使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小、元素大小等。

client系列属性作用
element.clientTop返回元素上边框的大小
element.clientLeft返回元素左边框的大小
element.clientWidth返回自身包括padding、内容区的宽度,不含边框,返回数值不带单位
element.clientHeight返回自身包括padding、内容区的宽度,不含边框,返回数值不带单位

立即执行函数

语法:(function() {})() 或者(function(){}())
主要作用:创建一个独立的作用域。避免命名冲突问题


元素滚动scroll系列

元素scroll系列属性
scroll翻译过来就是滚动的,使用scroll系列的相关属性可以动态的得到该元素的大小、滚动距离等

scroll系列属性作用
element.scrollTop返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeight返回自身实际的高度,不含边框,返回数值不带单位

页面的滚动距离是通过window.pageXOffset获得的

mouseenter鼠标事件
mouseenter不会冒泡与其搭配鼠标离开的mouseleave同样不会冒泡
mouseenter和mouseover的区别
mouseover鼠标经过自身盒子会触发,经过子盒子还会触发
mouseenter只会经过自身盒子触发

动画函数封装

动画实现原理
核心原理:通过定时器setInterval()不断移动盒子位置。
实现步骤:
1.获得盒子当前的位置
2.让盒子在当前位置加上1个移动距离
3.利用定时器不断重复这个操作
4.加一个结束定时器的条件
5.注意此元素需要添加定位,才能使用element.style.left

动画函数简单封装
注意函数需要传递2个参数,动画对象和移动到的距离

缓动效果原理
缓动动画就是让元素运动速度有所变化,最常见的是让速度慢慢停下来
思路:
1.让盒子每次移动的距离慢慢变小,速度就会慢慢落下来。
2.核心算法:(目标值 - 现在的位置)/ 10 做为每次移动的距离步长
3.停止的条件是:让当前盒子位置等于目标位置就停止定时器
4.注意步长值需要取整 往大的取整(Math.ceil(计算的内容)) 往小的取整(Math.floor(计算的内容))
5.判断步长值为正的还是负的,正的就往大的取整,负的就往小的取整

匀速动画就是 盒子是当前的位置 + 固定的值
缓动动画就是 盒子当前的位置 + 变化的值(目标值 - 现在的位置)/ 10

动画函数添加回调函数
回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程就叫做回调。

回调函数写的位置:定时器结束的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhb-journey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值