JavaScript BOM篇 基础记录

Posted xiaonanxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript BOM篇 基础记录相关的知识,希望对你有一定的参考价值。

一:BOM的含义:

1.什么是BOM?
DOM就是一套操作html标签的API(接口/方法/属性)
BOM就是一套操作浏览器的API(接口/方法/属性)

2.BOM中常见的对象
window: 代表整个浏览器窗口
注意: window是BOM中的一个对象, 并且是一个顶级的对象(全局)
Navigator: 代表当前浏览器的信息, 通过Navigator我们就能判断用户当前是什么浏览器
Location: 代表浏览器地址栏的信息, 通过Location我们就能设置或者获取当前地址信息
History: 代表浏览器的历史信息, 通过History来实现刷新/上一步/下一步
注意点: 出于隐私考虑, 我们并不能拿到用户所有的历史记录, 只能拿到当前的历史记录
Screen: 代表用户的屏幕信息

二:获取元素宽高的几种方式

1.通过getComputedStyle获取宽高
1.1获取的宽高不包括 边框和内边距
1.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
1.3只支持获取, 不支持设置
1.4只支持IE9及以上浏览器

    var oDiv = document.getElementById("box");
    // oDiv.style.width = "166px";
    // oDiv.style.height = "166px";
    var style = getComputedStyle(oDiv);
    // style.width = "166px";
    // style.height = "166px";
    console.log(style.width);
    console.log(style.height);

2.通过currentStyle属性获取宽高
2.1获取的宽高不包括 边框和内边距
2.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
2.3只支持获取, 不支持设置
2.4只支持IE9以下浏览器

 var oDiv = document.getElementById("box");
    // oDiv.style.width = "166px";
    // oDiv.style.height = "166px";
    var style = oDiv.currentStyle;
    style.width = "166px";
    style.height = "166px";
    // console.log(style);
    console.log(style.width);
    console.log(style.height);

3.通过style属性获取宽高
3.1获取的宽高不包括 边框和内边距
3.2只能获取行内设置的宽高, 不能获取CSS设置的宽高
3.3可以获取也可以设置
3.4高级低级浏览器都支持

 var oDiv = document.getElementById("box");
    oDiv.style.width = "166px";
    oDiv.style.height = "166px";
    console.log(oDiv.style.width);
    console.log(oDiv.style.height);

4.offsetWidth和offsetHeight
4.1获取的宽高包含 边框 + 内边距 + 元素宽高
4.2即可以获取行内设置的宽高也可以获取CSS设置的宽高
4.3只支持获取, 不支持设置
4.4高级低级浏览器都支持

var oDiv = document.getElementById("box");
    // oDiv.offsetWidth = "166px";
    // oDiv.offsetHeight = "166px";
    oDiv.style.width = "166px";
    oDiv.style.height = "166px";
    console.log(oDiv.offsetWidth);
    console.log(oDiv.offsetHeight);
   

总结:

1.getComputedStyle/currentStyle/style
获取的宽高不包括 边框和内边距
2.offsetWidth/offsetHeight
获取的宽高包括 边框和内边距

3.getComputedStyle/currentStyle/offsetXXX
只支持获取, 不支持设置
4.style
可以获取, 也可以设置

5.getComputedStyle/currentStyle/offsetXXX
即可以获取行内,也可以获取外链和内联样式
6.style
只能获取行内样式

三:获取元素位置的方式

offsetLeft和offsetTop作用
获取元素到第一个定位祖先元素之间的偏移位
如果没有祖先元素是定位的, 那么就是获取到body的偏移位

offsetParent作用:

获取元素的第一个定位祖先元素
如果没有祖先元素是定位的, 那么就是获取到的就是body

四:client属性

1.offsetWidth = 宽度 + 内边距 + 边框
  offsetHeight = 高度 + 内边距 + 边框
2.clientWidth = 宽度 + 内边距
   clientHeight = 高度 + 内边距

3 offsetLeft/offsetTop: 距离第一个定位祖先元素偏移位 || body

4 clientLeft/clientTop: 左边框 和 顶部边框 的 范围

 

以上是关于JavaScript BOM篇 基础记录的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript BOM篇

JavaScript进阶知识(BOM)-快速入门篇

JavaScript系列之Web API篇

JavaScript系列之 Web API篇Dom,Bom

前端基础:JavaScript BOM对象

JavaScript基础及函数,BOM,DOM的节点及DOM节点操作