【问题标题】:How to calculate left and top for div with position absolute when click单击时如何计算具有绝对位置的div的左侧和顶部
【发布时间】:2018-12-11 13:50:07
【问题描述】:

我有一些带有“点击”事件的项目。当我单击此项目时,我必须在单击位置显示模态。此模态具有绝对位置。

我尝试获取 event.pageX 和 event.pageY

let style = 'top: ' + event.pageX+ 'px; left: ' + event.pageY + 'px;';

但我的模态显示很远(看屏幕)

http://joxi.ru/brRa073u7J73vA

【问题讨论】:

  • 你传递的event是什么?
  • 设置父级相对位置和模态,在父级中具有绝对位置
  • 事件是点击
  • 如果我设置父位置相对我的模态结果更进一步

标签: javascript css


【解决方案1】:

您可以使用clientX/clientY事件的属性来获取点击的位置

【讨论】:

    【解决方案2】:

    您可能正在寻找clientXclientY,而不是pageXpageY。另外,请注意,您必须将 position: absolute 放在您要放置的模态上,以便它可以按您期望的那样工作(如果您对定位不太熟悉,您绝对应该阅读它 - 它是不像听起来那么简单)。

    pageXpageY

    相对于浏览器中完全呈现的内容区域的左上角 [...] 如果页面中嵌入了嵌入的可滚动页面并且用户移动滚动条。

    screenXscreenY

    相对于物理屏幕/显示器的左上角。

    clientXclientY

    相对于浏览器窗口的内容区域(视口)的左上边缘。即使用户从浏览器中移动滚动条,该点也不会移动。

    阅读更多:

    这是一个工作示例:

    document.addEventListener("click", e => {
        console.log(e.clientX, e.clientY);
        let modal = document.getElementById("modal");
        modal.style.top = e.clientY+"px";
        modal.style.left = e.clientX+"px";
    });
    #modal {
        position: absolute;
        width: 100px;
        height: 200px;
        background: blue;
    }
    <div id="modal"></div>

    【讨论】:

    • 我在使用clientX和clientY时遇到同样的问题joxi.ru/v29L590SZ3ZXDm
    • @Viktor 我没有看到您的代码,所以我无法真正告诉您出了什么问题 - 但我添加了一个工作示例作为灵感来帮助您找出问题所在。请注意,您必须使用position: absolute 正确放置模态框。
    • @Viktor 你用的是什么浏览器和版本?
    • @raphael75 @NonameSL 我创建了带有详细描述的新主题stackoverflow.com/questions/53738492/…
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多