普通javascript:覆盖对象

普通javascript:覆盖对象,javascript,html,css,dom,overlay,Javascript,Html,Css,Dom,Overlay,有任何对象(可以是内联对象,如,也可以是块元素,如或)作为原始对象 现在,我尝试在这个对象上设置一个覆盖,具有相同的位置和大小 =>函数覆盖对象(原始对象) 创建新覆盖并镜像原始对象的大小效果良好。我还可以将这个新元素附加到originalObject的父节点中 关于实现覆盖的位置,left+top仍在等待并失败。对于具有“位置:绝对”或“位置:固定”的原始对象,这很容易,但如何获得准确的左/顶位置以与叠加使用相同的位置?您可以使用offsetTop和offsetLeft来确定元素到父元素的左上

有任何对象(可以是内联对象,如,也可以是块元素,如或)作为原始对象

现在,我尝试在这个对象上设置一个覆盖,具有相同的位置和大小

=>
函数覆盖对象(原始对象)

创建新覆盖并镜像原始对象的大小效果良好。我还可以将这个新元素附加到originalObject的父节点中


关于实现覆盖的位置,left+top仍在等待并失败。对于具有“位置:绝对”或“位置:固定”的原始对象,这很容易,但如何获得准确的左/顶位置以与叠加使用相同的位置?

您可以使用
offsetTop
offsetLeft
来确定元素到父元素的左上距离:


只是想澄清一点——你说的“any object”是指“any element”吗?是的,是html正文中的元素。你的问题是“如何找到元素相对于整个文档的坐标”?请注意,它是到偏移父元素的距离,这略有不同。幸运的是,您可以使用
offsetParent
而不是
parentNode
function createOverlay(el) {
    var t = el.offsetTop;
    var l = el.offsetLeft;
    var newEl = el.cloneNode(true);
    newEl.style.margin = "0";
    newEl.style.position = "absolute";
    newEl.style.left = l + "px";
    newEl.style.top = t + "px";
    newEl.style.backgroundColor = "rgba(0,0,255,0.3)";
    el.offestParent.appendChild(newEl);
}