javascript - 使用 CSS 定位鼠标单击的左/右或顶部/底部

标签 javascript css

我需要一个从鼠标点击位置打开的弹出窗口。从可用性的 Angular 来看,当点击发生在窗口边缘附近时,我正在调整 JS 弹出窗口的位置[点击的右侧/左侧和点击的顶部/底部],如下所示:

function myfunc(e) {
let ele = document.getElementById('my-dialog');
ele.style["left"] =
  (window.innerWidth - e.pageX) < ele.offsetWidth ? e.pageX - ele.offsetWidth : e.pageX;
ele.style["top"] =
  (window.innerHeight - e.pageY) < ele.offsetHeight ? e.pageY - ele.offsetHeight : e.pageY; }

有没有一种方法可以只使用 CSS 来实现(或者有更好的 JS 解决方案来解决这个问题。)

最小工作代码示例 here .

最佳答案

查看工作演示:https://jsfiddle.net/drumperl/ce532rnf/

为了让它正常工作,我更改了 lefttop 样式设置以添加“px”。根据规范,长度设置需要相对或绝对测量单位,如“px”、“%”或“em”。 https://developer.mozilla.org/en-US/docs/Web/CSS/length

function myfunc(e) {
    let ele = document.getElementById('my-dialog');

    var newLeft = (window.innerWidth - e.pageX) < ele.offsetWidth ? e.pageX - ele.offsetWidth : e.pageX;
    ele.style.left = newLeft + 'px';

    var newTop = (window.innerHeight - e.pageY) < ele.offsetHeight ? e.pageY - ele.offsetHeight : e.pageY;
    ele.style.top = newTop + 'px';
  }
  document.onclick = myfunc;

希望这对您有所帮助。

关于javascript - 使用 CSS 定位鼠标单击的左/右或顶部/底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51809099/

相关文章:

javascript - 发送带有 header 的 AJAX 请求

html - 最大宽度和自动换行在 IE8 中不起作用

javascript - 我的下拉菜单没有下拉(它出现在侧面)以及如何粘住栏

optimization - 如何优化CSS代码?

c# - 如何在Winform中使用CSS格式化 Crystal 报表?

javascript - 具有可拖动内容的 CKEditor 4 小部件

javascript - ASP.NET OnTextChanged 事件没有立即响应

javascript - 在 Fabric.js 中将文本锁定到前面(不是每次都放在前面)

javascript - 在我的情况下主干验证方法不会触发

css - 删除 ui-select 框中的箭头