Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 能否获得元素在屏幕上(而不是在视口中)的绝对位置?_Javascript_Html_Css - Fatal编程技术网

Javascript 能否获得元素在屏幕上(而不是在视口中)的绝对位置?

Javascript 能否获得元素在屏幕上(而不是在视口中)的绝对位置?,javascript,html,css,Javascript,Html,Css,我想把一个元素放在屏幕上的一个绝对位置上,这样即使在浏览器窗口移动(不滚动)时,它也会保持(大致)相同的位置。这样的事情是可能的吗?可能不是最优化的解决方案,但您可以使用间隔来检查窗口.screenX和窗口.screenY(如评论中所建议的)。然后,当这些值更改时,使用与上一个位置的差值更新位置。比如: function setPosition(el, x, y) { var style = window.getComputedStyle(el); el.style.left =

我想把一个元素放在屏幕上的一个绝对位置上,这样即使在浏览器窗口移动(不滚动)时,它也会保持(大致)相同的位置。这样的事情是可能的吗?

可能不是最优化的解决方案,但您可以使用间隔来检查
窗口.screenX
窗口.screenY
(如评论中所建议的)。然后,当这些值更改时,使用与上一个位置的差值更新位置。比如:

function setPosition(el, x, y) {
    var style = window.getComputedStyle(el);
    el.style.left = parseInt(style.left) + x + "px";
    el.style.top = parseInt(style.top) + y + "px";
}

var sX = window.screenX,
    sY = window.screenY,
    box = document.getElementById("box");

var interval = setInterval(function() {
    if (window.screenX !== sX || window.screenY !== sY) {
        setPosition(box, sX - window.screenX, sY - window.screenY);
        sX = window.screenX;
        sY = window.screenY;
    }
}, 1000/30);

下面是一个例子。镀铬的有点起伏不定

@WaleedKhan你读过这个问题了吗?你可以使用
window.screenX
window.screenY
来计算offset@Josh除此之外,你还需要。参见[此处][1]它看起来有点问题。[1] :@VisioN我现在没有时间写完整的代码。我只是想给你一个暗示,好让别人接受我的建议。很好!一件事:最大化窗口似乎摆脱了定位。你知道这是否可以纠正吗?我认为它需要知道窗口的大小调整?是的,您还必须创建一种处理大小调整的方法。