我正在尝试获取我页面上一组元素的最高偏移值。我遍历每个元素并记录其最高偏移值,如下所示:
$(elements).each(function() {
var element = $(this);
var offset = Math.floor($(element).offset().top);
console.log(offset);
}
在 Firefox 中,这正确地给出了这些值:
458, 1023, 1625, 2274, 2746, 3072, 3398, 3823, 4388, 4930
但是在 Safari 中,我得到:
460, 718, 976, 1318, 1799, 1918, 2036, 2254, 2512, 2746
报告的第一个元素的偏移量在两个浏览器之间基本相同,但 Safari 与那里完全不同。 Safari 的其余值完全不合逻辑:例如,在 800px
高窗口中,它报告第二个元素的顶部偏移为 718px
,即使它实际上完全在屏幕外。
如果我手动测量每个元素的顶部出现在 Safari 中的位置,我得到的值与 Firefox 报告的值相同。所以页面实际上在两种浏览器中呈现相同,但 Safari 只是报告完全不同的 offset()
值。
(我也尝试过使用 position()
而不是 offset()
,我看到了同样的差异:第一个值在两个浏览器中都是正确的,并且那么 Safari 的值就完全关闭了)。
不幸的是,我无法分享我的实际代码,所以如果没有,是什么导致 Safari 单独关闭这么多?
最佳答案
我发现如果我在元素上设置一个 min-height
,等于元素已经呈现的高度,那么 Safari 会报告正确的 offset()
值(value)观。
关于jQuery offset() 仅在 Safari 中返回非常不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575133/