将 div 定位在另一个 div 的坐标处

Posted

技术标签:

【中文标题】将 div 定位在另一个 div 的坐标处【英文标题】:Positioning a div at co-ordinates of another div 【发布时间】:2018-06-21 21:09:15 【问题描述】:

我有一个 div,里面有一个锚标记,单击锚标记时,我获取它的坐标并使用 javascript 我在它旁边放置另一个 div。 下面是我的父 div。

<div class="parent1-div>
  <div class="parent2-div>
    <div class="child-div">
      <a (click)="anchorClickEvent($event)"></a>
    </div>
  </div>
</div>

这是另一个 div,我把它分开了,所以它也可以在其他地方使用,

<div class="movable-div" [ngStyle]="'left': xPosition, 'top': yPosition">
   This div contains some crazy animation
</div>

点击事件:

anchorClickEvent(event: Event)
    this.xPos = event.currentTarget['x'] - somePx + 'px';
    this.yPos = event.currentTarget['y'] - somePx + 'px';

这给了我相对于整个身体的位置,但我需要'child-div'相对于'parent-div1'的位置,所以我可以将这些位置设置为'movable-div'。

感谢您的意见。

【问题讨论】:

真正的问题是什么? 整个DOM结构不清楚。你的div.movable-div 放在哪里? 【参考方案1】:

解决了我的问题: 在点击事件中,我得到了锚标记的偏移量并减去了最顶层容器的偏移量,即“parent1-div”。

anchorClickEvent(event: Event)
  this.xPos = Math.round(event.srcElement.getBoundingClientRect().left) - Math.round(event.srcElement.closest('.parent1-div').getBoundingClientRect().left) + 'px';
  this.yPos = Math.round(event.srcElement.getBoundingClientRect().top) - Math.round(event.srcElement.closest('.parent1-div').getBoundingClientRect().top) + 'px';

并将这些样式动态添加到 'movable-div' 元素中,该元素是相对于 body 的绝对位置。

<div class="movable-div" [ngStyle]="'left': xPos, 'top': yPos">
  This div contains some crazy animation
</div>

【讨论】:

以上是关于将 div 定位在另一个 div 的坐标处的主要内容,如果未能解决你的问题,请参考以下文章

将 DIV 定位在光标处但在可视区域内

将绝对定位的 div 居中

CSS 如何通过top left 定位控制div在另一个div的位置

如何在另一个样式组件中定位样式组件?

将 div 定位到不同 div 的底部,而不使用 Absolute [关闭]

在另一个 DOM 元素上调度鼠标滚轮事件