本文介绍: Javascript 由三部分构成,ECMAScript,DOM和BOM。ECMAScript(核心)   描述了JS的语法基本对象浏览器对象模型,提供一些属性方法可以操作浏览器浏览器可以做什么呢?比如跳转到另一个页面、前进、后退等等,程序还可能需要获取屏幕大小之类的参数。BOM的核心是Window,而Window对象具有双重角色,它既是通过js访问浏览器窗口一个接口,又是一个Global(全局对象。这意味着在网页定义的任何对象变量函数,都以window作为其global对象

1. 写在前面

Javascript 由三部分构成,ECMAScript,DOM和BOM。

ECMAScript(核心)   描述了JS的语法和基本对象

Bom:(browser object model);浏览器对象模型,提供一些属性和方法可以操作浏览器,浏览器可以做什么呢?比如跳转到另一个页面、前进、后退等等,程序还可能需要获取屏幕大小之类的参数。 BOM的核心是Window,而Window对象又具有双重角色,它既是通过js访问浏览器窗口的一个接口,又是一个Global(全局)对象。这意味着在网页定义的任何对象,变量和函数,都以window作为其global对象。Window对象包含属性documentlocationnavigatorscreenhistoryframes

由于BOM的window包含document,因此可以直接使用window对象的document属性通过document属性就可以访问检索修改XHTML文档内容结构。因为document对象又是DOM(Document Object Model模型的根节点。BOM包含了DOM(对象),浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档

Domdocument object model):文档对象模型,顶级对象是document,主要用于操作页面元素,满足W3C标准

offsetWidth //返回元素宽度(包括元素宽度、内边距和边框不包括外边

offsetHeight //返回元素高度(包括元素高度、内边距和边框,不包括外边

clientWidth //返回元素的宽度(包括元素宽度、内边距,不包括边框外边

clientHeight //返回元素的高度(包括元素高度、内边距,不包括边框外边

style.width //返回元素的宽度(包括元素宽度不包括内边距边框外边

style.height //返回元素的高度(包括元素高度,不包括内边距边框外边

scrollWidth //返回元素的宽度(包括元素宽度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientWidth相同

scrollHeigh //返回元素的高度(包括元素高度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientHeight相同

网页可见区域宽: document.documentElement.clientWidth || document.body.clientWidth(含内边距(padding),包含边框(border),外边距(margin)和滚动条,是一个整数单位像素 px。)

图片描述
网页可见区域高: document.documentElement.clientHeight || document.body.clientHeight
网页可见区域宽: document.documentElement.offsetWidth || document.body.offsetWidth (包括边线的宽,元素的width+元素的padding+边框的宽度)

 


网页可见区域高: document.documentElement.offsetHeight || document.body.offsetHeight (包括边线的高)

offsetLeftoffsetTopoffsetRight、offsetBottom:以offsetLeft为例进行说明,在不同的浏览器中其值不同,且与父元素的position属性relative,absolute,fixed)有关。现分以下几种情况说明:(测试所用的浏览器版本为:Chrome 68.0.3440.106, opera54.0, Firefox61.0.1和IE11.0)

父元素均不设置position属性,在Chrome,opera和IE浏览器中offsetLeft是元素边框外侧到浏览器窗口内侧的距离且body.offsetLeft=0,

 当父元素设置position元素时又分为两种情况:

1.如果父元素是body且body设置了position属性,在Chrome和opera浏览器中offsetLeft是元素边框外侧到body边框外侧的距离

在IE和fireForx浏览器中offsetLeft是元素边框外侧到body边框内侧的距离

2如果父元素不是body元素且设置了position属性,offsetLeft为元素边框外侧到父元素边框内侧的距离(各浏览器情况一致)。

 
网页正文全文宽: document.documentElement.scrollWidth || document.body.scrollWidth
网页正文全文高: document.documentElement.scrollHeight || document.body.scrollHeight
网页被卷去的高: document.documentElement.scrollTop || document.body.scrollTop
网页被卷去的左: document.documentElement.scrollLeft || document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

 

 

offsetWidth与offsetLeft_willard_cui的博客-CSDN博客

1.窗口的位置

// 获取浏览器位置的方法
const leftPosition = typeOf window.screenLeft === 'number' ? window.screenLeft : window.screenX
const topPosition = typeOf window.screenTop === 'number' ? window.screenTop : window.screenY

 

screenLeft, screenTop:支持的浏览器有 IE, Safari, Opera, Chrome

screenX, screenY:支持的浏览器有 Firefox, Safari, Chrome, 此外,Opera也支持该属性,但与screenLeft,screenTop不对应

2.窗口的大小

浏览器窗口大小也提供了innerWidth, innerHeight, outerWidth, outerHeigt四个属性

  1. 在IE9+(考虑IE8?不存在的), Safari, Firefox中,outerWidth和outerHeight返回浏览器窗口本身尺寸。innerWidth,innerHeight表示页面视口大小(减轻边框宽度)。
  2. 在Opera中,outerWidth和outerHeight这两个属性的值表示页面视图容器大小。innerWidth,innerHeight表示页面视口大小(减轻边框宽度)。
  3. 在Chrome中,outerWidth和outerHeight与innerWidth,innerHeight返回的值一致,表示视口的大小。
let pageWidth = window.innerWidth,
    pageHeight = window.innerHeight
if (typeOf innerWidth != 'number') {
    if (document.compatMode == 'CSS1Compat') {//严格模式
        pageWidth = document.documentElement.clientWidth
        pageHeight = document.documentElement.clientHeight
    } else {
        pageWidth = document.body.clientWidth
        pageHeight = document.body.clientHeight
    }
}

3.getBoundingClientRect()

getBoundingClientRect() 返回的是矩形的集合
表示了当前盒子在浏览器中位置以及自身占据的空间的大小,除了 widthheight 之外,
其他的属性是相对于视图窗口的左上角 来计算的。

获取 dom 元素相对于网页左上角定位距离:

var positionX = this.getBoundingClientRect().left + document.documentElement.scrollLeft
var positionY = this.getBoundingClientRect().top + document.documentElement.scrollTop

判断元素是否在可视区域

function isElView(el) {
  var top = el.getBoundingClientRect().top // 元素顶端到可见区域顶端的距离
  var bottom = el.getBoundingClientRect().bottom // 元素底部端到可见区域顶端的距离
  var se = document.documentElement.clientHeight // 浏览器可见区域高度。
  if (top < se &amp;&amp; bottom > 0) {
    return true
  } else if (top >= se || bottom <= 0) {
    // 不可见
  }
  return false
}

原文地址:https://blog.csdn.net/feifei2211/article/details/129298821

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_16451.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注