JS的offsetWidth、clientWidth、scrollWidth等属性的描述

392 阅读3分钟

「这是我参与2022首次更文挑战的第26天,活动详情查看:2022首次更文挑战

大家好,我是 摸鱼小公举,真正的强者,不会怨天尤人,如果想不被别人看轻,你就只有付出比别人多十倍百倍的努力,才能站的比别人更高!上一篇文章是 全年日历展示并设置节假日,全年日历的展示以及设置节假日的功能实现。今天我们一起来学习一下JS的offsetWidth、clientWidth、scrollWidth等相关属性的详细描述。

首先关于 Width 和 Height 的属性

scrollWidth

获取对象的滚动宽度 (包含了元素的宽度,padding和溢出尺寸,不包含marginborder)

document.body.scrollWidth

scrollHeight

获取对象的滚动高度(包含了元素的高度,padding和溢出尺寸,不包含marginborder)

document.body.scrollHeight

offsetWidth

获取对象的宽度 (包含了元素的宽度,paddingborder,不包括margin)

document.body.offsetWidth

offsetHeight

获取对象的高度 (包含了元素的高度,paddingborder,不包括margin)

document.body.offsetHeight

clientWidth

获取对象可见内容的宽度(包含了元素的宽度,padding,不包含bordermargin)

document.body.clientWidth

clientHeight

获取对象可见内容的高度(包含了元素的高度,padding,不包含bordermargin)

document.body.clientHeight

style.width

返回元素自身的宽度,不包括paddingmargin

style.height

返回元素自身高度,不包括paddingmargin

然后是关于 Left 和 Top 的属性

scrollTop

设置/获取位于对象最顶端到对象中可见内容的最顶端之间的距离height + padding,就是元素滚动条向下拉动距离。

document.body.scrollTop

scrollLeft

设置/获取位于对象左边界到对象中可见内容的最左端之间的距离width + padding,就是元素滚动条向左拉动距离。

document.body.scrollLeft

offsetTop

当前对象到其上外缘距离最近采用定位父元素内壁的距离,如果父元素中没有采用定位的,则是获取上外边缘距离文档内壁的距离。

document.body.offsetTop

offsetLeft

当前对象到其左外缘距离最近采用定位父元素内壁的距离,如果父元素中没有采用定位的,则是获取左外边缘距离文档内壁的距离。

document.body.offsetLeft

总结以上属性(只读、可读写)

只读属性:offsetWidth,offsetHeight,clientWidth,clientHeight,offsetTop,offsetLeft。

可读写属性:style.width,style.heigh,scrollWidth,scrollHeight,scrollTop,scrollLeft。

当鼠标事件发生时(onclick,omousemove,onmouseover)

offsetX

当鼠标事件发生时,鼠标相对于事件源左上角X轴的坐标。

var x = event.offsetX

offsetY

当鼠标事件发生时,鼠标相对于事件源左上角Y轴的坐标。

var y = event.offsetY

screenX

当鼠标事件发生时,鼠标相对于显示器屏幕左上角X轴的坐标;

var x = event.screenX

screenY

当鼠标事件发生时,鼠标相对于显示器屏幕左上角Y轴的坐标;

var y = event.screenY

clientX

当鼠标事件发生时,鼠标相对于浏览器(这里说的是浏览器的有效区域)左上角X轴的坐标;不随滚动条滚动而改变

var x = event.clientX

clientY

原理同上,不同:左上角Y轴的坐标

var y = event.clientY

pageX

原理同上,不同:左上角X轴的坐标;随滚动条滚动而改变

var x = event.pageX

pageY

原理同上,不同:左上角Y轴的坐标

var y = event.pageY

鼠标事件发生时,相关属性的图片描述

image.png

结语:

好了文章到这就结束了,欢迎大家( 点赞+评论+关注 ) 有问题可以来互相交流一下;希望这篇文章对大家有用,也希望大家多多支持我。 今天是我参与2022首次更文挑战的第26天,加油!