为什么 .offset() 位置是不可预测的



我在项目中遇到了这个问题:

我正在实现这个函数:当单击一个元素 A 时,另一个元素 B 将显示在 A 旁边。代码逻辑如下所示:

eleB.offset({top: eleA.offset().top, left: eleA.offset().left + eleA.width() + 10});
eleB.show();

在 CSS 中

#eleB {
    position: absolute;
}

元素B的位置似乎不可预测,并不总是停留在eleA上。当我打印出eleB的偏移量时,数字似乎不知从何而来。每次位置都不同,即使 eleA 永远不会改变。

我使用 .css() 作为替代方案,效果很好。

只是想知道为什么 .offset() 会得到一些不可预测的输出。

谢谢!

.offset()是元素相对于document边界的位置。

如果A offsetTop 是 比方说 800 ,点击 A ,您尝试定位到top: A-offsetB元素会很顺利......到那个最高位置。
如果它位于页面某处的父级内部,则该800px顶部将与A的位置不匹配。
如果您直接将B作为<body>子项放置,则移动的 800 像素顶部 B 将与确切的 A 位置匹配

同一父级 - 演示
B 在正文中 - 演示

最新更新