clientWidth、clientHeight
- 这两个属性可以获取元素的可见宽度和高度,包括内容区和内边距(不包括边框和外边距)。
- 这些属性都是不带 px 的,返回的都是一个数字,可以直接进行计算。这些属性都是只读的,不能修改。
clientX 、 clientY
- 用于获取鼠标在当前的可见窗口的坐标,而 div 的偏移量是相对于整个页面(html 文档流)的。
pageX 、 pageY
- 可以获取鼠标相对于当前页面(html 文档流)的坐标
- 但是这两个属性在 IE8 中不支持,所以如果要兼容 IE8,则不要使用。
offsetWidth、offsetHeight
- 可以获取元素整个的宽度和高度,包括内容区、内边距和边框。
- 与 clientWidth、clientHeight 的区别是 clientWidth、clientHeight 包括了边框
offsetParent
- 可以用来获取当前元素的定位父元素,它会获取到离当前元素最近的开启了定位(position 值不为 static)的祖先元素。
- 如果所有的祖先元素都没开启定位,则返回 body。
offsetLeft、offsetTop
- 获取当前元素相对于其定位父元素的水平偏移量以及垂直偏移量。
scrollHeight、scrollWidth
- 可以获取元素整个滚动区域的高度和宽度。
scrollLeft、scrollTop
- 获取水平滚动条和竖直滚动条滚动的距离。
- chrome 认为浏览器的滚动条是 body 的,可以通过 body.scrollTop 来获取。而火狐等浏览器认为浏览器的滚动条是 html 的。
JavaScript
//在chrome浏览器中
var st = document.body.scrollTop;
//在火狐IE浏览器中
var st = document.documentElement.scrollTop;
//处理兼容性问题最终方案
var st = document.body.scrollTop || document.documentElement.scrollTop;
var sl = document.body.scrollLeft || document.documentElement.scrollLeft;
//div随鼠标移动
//解决事件对象的兼容性问题
event = event || window.event;
var left = event.pageX;
var top = event.pageY;
//设置div的偏移量
box1.style.left = left + sl + "px";
box1.style.top = top + st + "px";
TIP
当满足 scrollHeight - scrollTop == clientHeight 时,说明垂直滚动条滚动到底。 当满足 scrollWidth - scrollLeft == clientWidth 时,说明水平滚动条滚动到底