【问题标题】:jQuery offset() returning wildly incorrect values in Safari onlyjQuery offset() 仅在 Safari 中返回非常不正确的值
【发布时间】: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


【解决方案1】:

我发现,如果我在元素上设置 min-height,等于元素已经呈现的高度,那么 Safari 会报告正确的 offset() 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多