javascript - 你能得到元素在屏幕上(而不是在视口(viewport)中)的绝对位置吗?

标签 javascript html css

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

最佳答案

也许不是最优化的解决方案,但您可以使用间隔来检查 window.screenXwindow.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);

这里是 JSFiddle 的例子.它在 Chrome 上有点不稳定。

关于javascript - 你能得到元素在屏幕上(而不是在视口(viewport)中)的绝对位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232478/

相关文章:

javascript - 如何获取和打印 .hbs 或 .handlebars 模板?

javascript - 为什么每次点击时数组都是空的?

jquery - 主体背景颜色不会像其他 div 那样过渡

html - Twitter-Bootstrap & IE 网格系统问题

php - 使整个网站的页眉、侧边栏和页脚保持不变

javascript - IE 不加载整个页面 HTML 源代码

html - 为什么是:not not working?

html - 输入框不适合 div 跨浏览器

html - 为什么添加填充导致它扩展

javascript - 我的路线行不通,请使用express和ejs