记录一下pageX,offsetX,clientX,offsetLeft,offsetWidth,pageYoffset,scrollTop,scrollY,等。原文摘自MDN文档库。保证正确。

这几个属性其实都好理解,但是太多了很容易忘记又记混了。所以从MDN里面摘抄一下。保证记住。(X,Y同理,我只写一个)

目录

1.MouseEvent.pageX

2.MouseEvent.offsetX

3.MouseEvent.clientX

4.HTMLElement.offsetLeft

5.Element.getBoundingClientRect()

6.Element.clientWidth

7.Element.scrollTop

8.Window.scrollY

9.Window.pageYOffset

10.HTMLElement.offsetWidth


1.MouseEvent.pageX

var pageX = event.pageX;

 pageX 是一个由MouseEvent接口返回的相对于整个文档的x(水平)坐标以像素为单位的只读属性。

这个属性将基于文档的边缘,考虑任何页面的水平方向上的滚动。举个例子,如果页面向右滚动 200px 并出现了滚动条,这部分在窗口之外,然后鼠标点击距离窗口左边 100px 的位置,pageX 所返回的值将是 300。MouseEvent.pageX - Web API 接口参考 | MDN

2.MouseEvent.offsetX

MouseEvent 接口的只读属性 offsetX 规定了事件对象与目标节点的内填充边(padding edge)在 X 轴方向上的偏移量。

var xOffset = instanceOfMouseEvent.offsetX;

MouseEvent.offsetX - Web API 接口参考 | MDN

3.MouseEvent.clientX

MouseEvent.clientX 是只读属性, 它提供事件发生时的应用客户端区域的水平坐标 (与页面坐标不同)。例如,不论页面是否有水平滚动,当你点击客户端区域的左上角时,鼠标事件的 clientX 值都将为 0 。最初这个属性被定义为长整型(long integer),如今 CSSOM 视图模块将其重新定义为双精度浮点数(double float)。你可以查阅浏览器兼容性部分的文档来进一步了解有关信息。


var x = instanceOfMouseEvent.clientX

MouseEvent.clientX - Web API 接口参考 | MDN

4.HTMLElement.offsetLeft

(我理解的是相对于有定位的父、祖先元素的左边距离,如果父级或者祖先级都没有定位那就是相对于body的左边距离。offsetTop同理),

 HTMLElement.offsetLeft 是一个只读属性,返回当前元素左上角相对于  HTMLElement.offsetParent 节点的左边界偏移的像素值。

对块级元素来说,offsetTopoffsetLeftoffsetWidth 及 offsetHeight 描述了元素相对于 offsetParent 的边界框。

然而,对于可被截断到下一行的行内元素(如 span),offsetTop 和 offsetLeft 描述的是第一个边界框的位置(使用 Element.getClientRects() 来获取其宽度和高度),而 offsetWidth 和 offsetHeight 描述的是边界框的尺寸(使用 Element.getBoundingClientRect 来获取其位置)。因此,使用 offsetLeft、offsetTop、offsetWidthoffsetHeight 来对应 left、top、width 和 height 的一个盒子将不会是文本容器 span 的盒子边界。

left = element.offsetLeft;

HTMLElement.offsetLeft - Web API 接口参考 | MDN

5.Element.getBoundingClientRect()

Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。

如果是标准盒子模型,元素的尺寸等于width/height + padding + border-width的总和。如果box-sizing: border-box,元素的的尺寸等于 width/height

rectObject = object.getBoundingClientRect();

返回值是一个 DOMRect 对象,这个对象是由该元素的 getClientRects() 方法返回的一组矩形的集合,就是该元素的 CSS 边框大小。返回的结果是包含完整元素的最小矩形,并且拥有lefttoprightbottomxywidth, 和 height这几个以像素为单位的只读属性用于描述整个边框。除了width 和 height 以外的属性是相对于视图窗口的左上角来计算的。

Element.getBoundingClientRect() - Web API 接口参考 | MDN

6.Element.clientWidth

内联元素以及没有 CSS 样式的元素的 clientWidth 属性值为 0。Element.clientWidth 属性表示元素的内部宽度,以像素计。该属性包括内边距 padding,但不包括边框 border、外边距 margin 和垂直滚动条(如果有的话)。

当在根元素(<html>元素)上使用clientWidth时(或者在<body>上,如果文档是在quirks(怪异)模式下),将返回viewport的宽度(不包括任何滚动条). This is a special case of clientWidth.

该属性值会被四舍五入为一个整数。如果你需要一个小数值,可使用 element.getBoundingClientRect()

var intElemClientWidth = element.clientWidth;

intElemClientWidth 是一个整数,表示元素的 clientWidthclientWidth 是一个只读属性。

Image:Dimensions-client.png

7.Element.scrollTop

Element.scrollTop 属性可以获取或设置一个元素的内容垂直滚动的像素数。

一个元素的 scrollTop 值是这个元素的内容顶部(卷起来的)到它的视口可见内容(的顶部)的距离的度量。当一个元素的内容没有产生垂直方向的滚动条,那么它的 scrollTop 值为0

// 获得滚动的像素数
var  intElemScrollTop = someElement.scrollTop;

运行此代码后, intElemScrollTop 是一个整数,即element的内容向上滚动的像素数。

// 设置滚动的距离
element.scrollTop = intValue;

Element.scrollTop - Web API 接口参考 | MDN

8.Window.scrollY

返回文档在垂直方向已滚动的像素值。

var y = window.scrollY;
  • y 是文档从顶部开始滚动过的像素值。

9.Window.pageYOffset

只读属性pageYOffset是 scrollY 的别名。返回文档在垂直方向已滚动的像素值。

10.HTMLElement.offsetWidth

HTMLElement.offsetWidth 是一个只读属性,返回一个元素的布局宽度。一个典型的(译者注:各浏览器的offsetWidth可能有所不同)offsetWidth是测量包含元素的边框(border)、水平线上的内边距(padding)、竖直方向滚动条(scrollbar)(如果存在的话)、以及CSS设置的宽度(width)的值。

var offsetWidth =element.offsetWidth;

intElemOffsetWidth is a variable storing an integer corresponding to the offsetWidth pixel value of the element. offsetWidth 是一个只读属性。

这个属性将会 round(四舍五入)为一个整数。如果你想要一个fractional(小数)值,请使用element.getBoundingClientRect().

Image:Dimensions-offset.png

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值