javascript - 根据鼠标点击位置定位 div

标签 javascript css angular

我需要显示一个弹出窗口,其位置与 Angular 4 中单击的鼠标坐标相关。 一个完美的例子是在 Google 日历中创建事件

最佳答案

在 HTML 中:

<div class="click-container" (click)="onMouseClick($event)"></div>

在你的 TS 中:

onMouseClick(e: MouseEvent) {
  console.log(e);
  //e.pageX will give you offset from left screen border
  //e.pageY will give you offset from top screen border

  //determine popup X and Y position to ensure it is not clipped by screen borders
  const popupHeight = 400, // hardcode these values
    popupWidth = 300;    // or compute them dynamically

  let popupXPosition,
      popupYPosition

  if(e.clientX + popupWidth > window.innerWidth){
      popupXPosition = e.pageX - popupWidth;
  }else{
      popupXPosition = e.pageX;
  }

  if(e.clientY + popupHeight > window.innerHeight){
      popupYPosition = e.pageY - popupHeight;
  }else{
      popupYPosition = e.pageY;
  }
}

然后需要使用相关代码初始化弹出组件。

关于javascript - 根据鼠标点击位置定位 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700015/

相关文章:

angular - 使用AngularDart的应用布局不会在抽屉上显示项目

javascript - Ajax post 返回 undefined

javascript - 如何使用 Javascript 更改浏览器语言

javascript - 通过 History.pushState() 函数传递 jQuery 对象

jquery - 反向折叠/展开 jquery 脚本

javascript - 如何制作视频填充框?

Angular Material 以编程方式更改选项卡标签

javascript - 使用 javascript 切换 html 内容

html - 仅使用 CSS 加载时如何缩放元素?

angular - 将自定义 Modernizr 构建集成到 Angular 项目中的最佳方法是什么?