在实际开发中,我们往往需要获取网页上的一些此尺寸,但是官方给出的方法很多,容易混,这里分以下类
查看滚动条的距离
- window.pageXOffset/pageYOffset 该方法在IE8及IE8以下不兼容, 可以使用下面的方法
- document.body.scrollLeft || .scrollTop 或者 document.documentElement.scrollLeft || .scrollTop,由于兼容性比较混乱,有时候支持前者,有时候支持后者,但是不会同时支持,所以一般是取两者相加
查看可视区域视口的尺寸
- window.innerWidth(包括滚动条)/innerHeight 但是该方法在IE8及IE8以下不兼容 可以使用以下方法,
- document.documentElement.clientWidth(不包括滚动条)/clientHeight, 但是方法只是在标准模式下,任意浏览器都兼容, 标准模式就是使用当前浏览器的最新语法,怪异模式就是向后兼容,通过去除html文档顶部的<!DOCTYPE html>实现, 可通过document.compatMode来查看到底是标准模式还是怪异模式,在怪异模式下面,可以通过下面的方法实现
- document.body.clientWidth(不包括滚动条)/clientHeight(整个文档高度,包括不可视部分)
查看元素的几何尺寸(宽高)
- domEle.getBoundingClientRect();该方法会返回一个对象,该方法返回一个对象,对象里面有left,top,right,bottom等属性。left和top或者x和y,代表该元素左上角的X和Y坐标,right和bottom代表元素右下角的X和Y坐标,而且需要注意的是,它们都是相对于文档顶部左上角的坐标而不是窗口。height和width属性代表元素内容区宽高,老版本IE并未实现,而且该方法返回的结果并不是“实时的”。一般我们可以使用下面的方法替代它:
- dom.offsetWidth,dom.offsetHeight 来获得宽高,dom.offsetLeft, dom.offsetTop来获得左上角位置。需要注意的是,这几个方法对于无定位父级的元素,返回相对文档的坐标。对于有定位父级的元素,返回相对于最近的有定位的父级的坐标。定位也就是(css 的position属性 ),.同时dom.offsetParent返回最近的有定位的父级,如无,返回body
滚动条滚动
- window上有三个方法, scroll(),scrollTo(),scrollBy(),三个方法功能类似,用法都是将x,y坐标传入。即实现让滚动轮滚动到当前位置。scroll(),scrollTo(),指定的是滚动到哪个左边, 而scrollBy()指定的是滚动一次要滚动多长的距离
使用event 获取鼠标的位置
- event.clientX | clientY: 返回相对于窗口的位置
- event.offsetX | offsetY: 返回相对于当前元素的位置