我在项目中遇到了这个问题:
我正在实现这个函数:当单击一个元素 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-offset
的B
元素会很顺利......到那个最高位置。
如果它位于页面某处的父级内部,则该800px
顶部将与A
的位置不匹配。
如果您直接将B
作为<body>
子项放置,则移动的 800 像素顶部 B 将与确切的 A 位置匹配
同一父级 - 演示
B 在正文中 - 演示