【博学谷学习记录】超强总结,用心分享|WebAPI(四)

发布于:2022-12-21 ⋅ 阅读:(152) ⋅ 点赞:(0)

目录

BOM

顶级对象window

window对象的常见事件

调整窗口大小事件

定时器

location对象

history对象

元素偏移量offset系列

元素可视区client系列

元素滚动scroll系列


BOM

浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。

BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。

BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。

顶级对象window

window对象是浏览器的顶级对象,它具有双重角色。

1.他是js访问浏览器窗口的一个接口。

2.他是一个全局对象,定义在全局作用域中的变量,函数都会变成window对象的属性和方法,在调用的时候可以省略window。

window对象的常见事件

页面(窗口)加载事件

window.οnlοad=function(){}

window.addEventListener("load",function(){}

window.onload是窗口(页面)加载事件,当文档内容完全加载完成,会触发该事件,包括图像、脚本文件、css文件等,就调用的处理函数。

document.addEventListener("DOMContentLoaded",function(){})

DOMContentLoaded事件触发时仅当DOM加载完成,不包括样式表,图片,flash等等。

IE 9以上才支持。

如果页面的图片很多的话,从用户访问到onload出发,可能需要较长的时间,交互效果就不能实现必然影响用户的体验,此时用DOMContentLoaded事件比较合适。

<script>
    window.addEventListener('load', function() {
        var btn = document.querySelector('button');
        btn.addEventListener('click', function() {
            alert('点击我');
        })
    })
</script>

调整窗口大小事件

window.οnresize=function(){}

window.addEventListener("resize",function(){})

window.onresize是调整窗口大小加载事件,当触发时就调用的处理函数。

注意:

1.只有窗口大小发生像素变化就会触发这个事件。

2.我们经常利用这个事件完成响应式布局。

<div></div>
<script>
    window.addEventListener('load', function() {
        var div = document.querySelector('div');
        window.addEventListener('resize', function() {
            console.log(window.innerWidth);
            console.log('变化了');
            if (window.innerWidth <= 800) {
                div.style.display = 'none';
            } else {
                div.style.display = 'block';
            }
        })
    })
</script>

定时器

Window对象给我们提供了两个非常好的方法定时器。

setTimeout()

setInterval()

setTimeout()炸弹定时器

开启定时器

window.setTimeout(调用函数,[延迟的毫秒数])

注意:

1.window可以省略

2.这个调用函数可以直接写函数,或者写函数名,或者采取字符串'函数名()'三种形式,第三种不推荐

3.延迟的毫秒数省略,默认是零,如果写必须是毫秒

4.因为定时期可能有很多种,所以我们经常给定时器复制一个标识符

停止定时器

window.clearTimeout(timeoutID)

注意:

1.window可以省略

2.里面的参数就是定时器的标识符

//5秒之后自动关闭广告
<img src="images/xxx.jpg" alt="" class="ad">
<script>
    var ad = document.querySelector('.ad');
    setTimeout(function() {
        ad.style.display = 'none';
    }, 5000);
</script>

setInterval()闹钟定时器

开启定时器

window.setInterval(调用函数,[延迟的毫秒数])

setInterval()方法重复调用一个函数,每隔这个时间就会调用一次回调函数。

注意:

1.window可以省略

2.这个调用函数可以直接写函数或者写函数名,或者采取字符串'函数名()'三种形式

3.间隔的毫秒数省略,默认是0,如果写必须是毫秒。表示每隔多少毫秒就自动调用这个函数

4.因为定时器可能有很多,所以我们经常给定时器赋值一个标识符

5.第一次执行也是间隔毫秒数之后执行之后每隔毫秒数就执行一次

停止定时器

window.clearInterval(intervalID)

clearInterval()方法取消了先前调用setInterval()建立的定时器。

注意:

1.window可以省略

2.里面的参数就是定时器的标示符

location对象

window对象给我们提供了一个location属性用于获取或设置窗体的URL,并且可以调用于解析URL,因为这个属性返回的是一个对象,所以我们将这个属性也成为location对象。

URL

统一资源定位符,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎样处理它。

组成 说明
protocal 通信协议常用的http,ftp,maito等
host 主机(域名)
port 端口号
path 路径,由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
query 参数 以键值对的形式
fragment 片段 #后面内容 常见于链接锚点

location对象属性

location对象属性 返回值
location.href 获取或设置整个URL
location.host 返回主机
location.port 返回端口号
location.pathname 返回路径
location.search 返回参数
location.hash 返回片段 #后面内容 常见于链接锚点

location对象的常见方法

location对象方法 返回值
location.assign() 跟href一样,可以跳转页面
location.replace() 替换当前页面,因为不记录历史,所以不能后退页面
location.reload() 重新加载页面,相当于刷新按钮
<button>点击</button>
<script>
    var btn = document.querySelector('button');
    btn.addEventListener('click', function() {
        // 记录浏览历史,所以可以实现后退功能
        // location.assign('http://www.baidu.com');
        // 不记录浏览历史,所以不可以实现后退功能
        // location.replace('http://www.baidu.com');
        location.reload(true);
    })
</script>

history对象

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

history对象方法 作用
back() 可以后退功能
forward() 前进功能
go(参数) 前进后退功能 参数为1,前进一个页面,参数为-1,后退一个页面

元素偏移量offset系列

offset 翻译过来就是偏移量,我们使用oft系列相关属性可以动态的得到该元素的位置,大小等。

offset系列属性 作用
element.offsetParent 返回作为该元素带有定位的父级元素,如果父级没有定位则返回body
element.offsetTop 返回元素相对带有定位父元素上方的偏移
element.offsetLeft 返回元素相对带有定位父元素左边框的偏移
element.offsetWidth 返回自身包括padding、边框、内容区的高度,返回值不带单位
element.offsetHeight 返回自身包括padding、边框、内容区的高度,返回值不带单位
<div class="father">
    <div class="son"></div>
</div>
<div class="w"></div>
<script>
    // offset 系列
    var father = document.querySelector('.father');
    var son = document.querySelector('.son');
    // 1.可以得到元素的偏移 位置 返回的不带单位的数值  
    console.log(father.offsetTop);
    console.log(father.offsetLeft);
    // 它以带有定位的父亲为准  如果么有父亲或者父亲没有定位 则以 body 为准
    console.log(son.offsetLeft);
    var w = document.querySelector('.w');
    // 2.可以得到元素的大小 宽度和高度 是包含padding + border + width 
    console.log(w.offsetWidth);
    console.log(w.offsetHeight);
    // 3. 返回带有定位的父亲 否则返回的是body
    console.log(son.offsetParent); // 返回带有定位的父亲 否则返回的是body
    console.log(son.parentNode); // 返回父亲 是最近一级的父亲 亲爸爸 不管父亲有没有定位
</script>

元素可视区client系列

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

clien系列属性 作用
element.clientTop 返回元素上边框的大小
element.clientLeft 返回元素左边框的大小
element.clientWidth 返回自身包括padding、内容区的高度,不含边框,返回值不带单位
element.clientHeight 返回自身包括padding、内容区的高度,不含边框,返回值不带单位
<style>
    div {
        width: 200px;
        height: 200px;
        background-color: pink;
        border: 10px solid red;
        padding: 10px;
    }
</style>

<div></div>
<script>
    var div = document.querySelector('div');
    console.log(div.clientTop);
    console.log(div.clientLeft);
    console.log(div.clientWidth);
    console.log(div.clientHeight);
</script>

元素滚动scroll系列

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

scroll系列属性 作用
element.scrollTop 返回被卷去的上侧距离,返回值不带单位
element.scrollLeft 返回被卷去的左侧距离,返回值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回值不带单位
element.scrollHeight 返回自身实际的高度,不含边框,返回值不带单位
<style>
    div {
        width: 200px;
        height: 200px;
        background-color: pink;
        border: 10px solid red;
        padding: 10px;
        overflow: auto;
    }
</style>

<div>
    我是内容 我是内容 我是内容 我是内容 我是内容 我是内容 我是内容 我是内容
</div>
<script>
    // scroll 系列
    var div = document.querySelector('div');
    console.log(div.scrollHeight);
    console.log(div.clientHeight);
    // scroll滚动事件当我们滚动条发生变化会触发的事件
    div.addEventListener('scroll', function() {
        console.log(div.scrollTop);
    })
</script>


网站公告

今日签到

点亮在社区的每一天
去签到