Position
从 Prototype 1.6 开始,Position
对象已经完全被 Element 对象的相关方法所取代。
Position
对象提供了一系列方法用于解决 DOM 元素的位置和布局方面的问题。它主要是给第三方的 UI 库如
script.aculo.us 使用的。
方法
absolutize不推荐
absolutize(element)
转换元素的定位方式为绝对定位,并且不改变元素在页面中的位置。
译注:该方法使用代码 element.style.position = 'absolute'
改变定位方式。在改变定位方式后,
元素左上角的坐标仍会保持原来的位置,如果元素未设置初始的 width
和 height
属性,则调用该方法后,
元素的宽度和高度会改变为系统预设值。
clone不推荐
clone(source, target[, options]) -> [Number, Number]
从 source
中复制参数 options
指定的位置和/或尺寸的相关信息到 target
。
cumulativeOffset不推荐
cumulativeOffset(element) -> [Number, Number]
返回 element
相对于页面左上角的坐标。
offsetParent不推荐
offsetParent(element) -> HTMLElement
返回 element
的容器块(Containing Block)(译注:距离元素最近的 CSS
position
属性为 relative
或 absolute
的先代节点)节点,
如果不存在这样一个节点,则返回 body
元素。
overlap不推荐
overlap(mode, element) -> Number
返回一个界于 0
和 1
之间的数值,用于表示先前使用
Position.within 方法指定的点基于 element
左上角的坐标值与 element
宽高的比例。mode
可以设置为 vertical
或 horizontal
。
page不推荐
page(element) -> [Number, Number]
返回 element
相对于浏览器可视区域左上角的坐标值。
(译注:坐标原点以浏览器当前可见的部分为基准,意即当滚动条滚动后,
坐标原点也随之改变,坐标原点在当前窗口中永远可见。)
positionedOffset不推荐
positionedOffset(element) -> [Number, Number]
以 element
的容器块(Containing Block)节点(译注:距离元素最近的 CSS position
属性为 relative
或 absolute
的先代节点)为坐标原点,返回 element
的坐标偏移值(元素的容器块节点可通过 Position.offsetParent(element) 方法获取)。
prepare不推荐
prepare()
计算文档的滚动偏移值,为使用 Position.withinIncludingScrolloffsets 方法作好准备。
realOffset不推荐
realOffset(element) -> [Number, Number]
在内含滚动条的容器中计算元素的累积滚动偏移值。
relativize不推荐
relativize(element)
转换元素的定位方式为相对定位,并且不改变元素在页面中的位置。
译注:该方法使用代码 element.style.position = 'relative'
改变定位方式。在改变定位方式后,
元素左上角的坐标仍会保持原来的位置,如果元素未设置初始的 width
和 height
属性,则调用该方法后,
元素的宽度和高度会改变为系统预设值。
within不推荐
within(element, x, y) -> Boolean
判断点 x, y
(以页面左上角为坐标原点)是否在 element
的边界范围内。
在使用 Position.overlap 方法前必须立即调用该方法。
withinIncludingScrolloffsets不推荐
withinIncludingScrolloffsets(element, x, y) -> Boolean
判断点 x, y
(以页面左上角为坐标原点)是否在 element
的边界范围内。
当 element
是一个可滚动容器的子节点时,请使用该方法代替 Position.within。
在使用时,应按照 Position.prepare --> withinIncludingScrolloffsets
--> Position.overlap 的顺序调用这些方法。