Javascript HTML:如何获取元素';s相对于其父对象的位置?

Javascript HTML:如何获取元素';s相对于其父对象的位置?,javascript,html,Javascript,Html,如何获取元素相对于其父元素的位置(左侧和顶部) 注意:父级位置既不是相对位置也不是绝对位置,因此偏移位置和偏移位置不起作用 父级/子级可能有边距/边框/填充 仅香草JS,无jquery。您可以通过window.getComputedStyle和香草JS选择器获取样式 函数getStyleProp(elem,prop){ if(window.getComputedStyle) 返回窗口.getComputedStyle(elem,null).getPropertyValue(prop); else

如何获取元素相对于其父元素的位置(左侧和顶部)

注意:父级
位置既不是
相对位置
也不是
绝对位置
,因此
偏移位置
偏移位置
不起作用

父级/子级可能有边距/边框/填充


仅香草JS,无jquery。

您可以通过window.getComputedStyle和香草JS选择器获取样式

函数getStyleProp(elem,prop){
if(window.getComputedStyle)
返回窗口.getComputedStyle(elem,null).getPropertyValue(prop);
else if(elem.currentStyle)返回elem.currentStyle[prop];//IE
}
elem=document.getElementById(“id”)
log(getStyleProp(elem,“top”))
log(getStyleProp(elem,“左”))
原始函数由


src:

您可以使用
.getBoundingClientRect()
返回元素相对于视口的位置。因此,您可以使用
.getBoundingClientRect()
获取元素和父元素的位置,并从中计算元素相对于父元素的位置。看看下面的答案


这是否回答了您的问题?否。仅当父级没有边框时,解决方案才有效。如果是,则结果移位。是否自动计算父级的边距/边框/填充?它计算高度/宽度=高度/宽度+填充。签出文档。我测试的(clientRect.top-parentRect.top)仅适用于无边框和填充的父对象。边框和填充物的宽度改变了结果。是的,我可以获取边框/填充宽度。还有更简单的方法吗?更新:孩子的边界和填充物也在改变结果