【发布时间】:2015-07-22 22:27:22
【问题描述】:
我正在尝试获取页面上一组元素的顶部偏移值。我正在遍历每个元素并记录其顶部偏移值,如下所示:
$(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 单独关闭这么多?
【问题讨论】:
-
据我所知,这会影响任何没有内容的内联元素。您必须将 span-element 更改为任何块元素或添加 display: block;到跨度标签
-
元素实际上已经是块级的(它们是浮动的
divs)。 -
请使用 HTML 和 CSS 添加完整的可测试示例。
标签: jquery css safari position offset