普通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);
}