javascript位置相关知识点整理

1、css指定元素的位置采用的是文档坐标;

2、js查询元素位置的方法返回的是元素在视口中的位置,即视口坐标;

如何获得元素的位置和尺寸

获得元素的位置和尺寸可以通过getBoundingClientRect(),该方法返回的是视口坐标(值包含边框和内边距,不含外边距);

Element.getBoundingClientRect()不支持老式浏览器,可以用offsetWidth,offsetHeight,offsetLeft,offsetTop,clientWidth,clientHeight,clientLeft,clientTop,scrollWidth,scrollHeight,scrollLeft,scrollTop(这些都是Element对象,scrollTo是window对象)

offsetWidth,offsetHeight返回值包含内容和内边距和边框,不包含外边距

clientWidth,clientHeight返回值包含内容和内边距,不包含边框和外边距;对于内联元素这两个值总是0

scrollWidth,scrollHeight返回值包含内容和内边距以及溢出的部分,不包含边框和外边距,当无溢出时和clientWidth,clientHeight相等

offsetLeft,offsetTop对于大部分元素都是文档坐标,但对于已定位的元素的后代元素和一起其他元素(表格)返回的是相对于祖先元素的坐标

clientLeft,clientTop基本不用

scrollLeft,scrollTop指定滚动条滚动到指定的位置

如何获取滚动条位置:

可以通过(pageXOffset,pageYOffset,ScrollX,ScrollY:window对象),(scrollLeft,scrollTop:Element对象),来获得滚动条的位置

window.pageXOffset,window.pageYOffset

window.ScrollX,window.ScrollY

正常模式下:

document.documentElement.scrollLeft,document.documentElement.scrollTop

怪异模式下:

document.body.scrollLeft,document.body.scrollTop(360极速模式就是怪异模式)

如何让滚动条滚动到指定位置:

window.scrollTo();参数为x和y方向上的位置,指定数值多少就跳转到多少

window.scrollBy();参数为x和y方向上的相对值,在原有基础上增加