偏移顶部在 IOS 中不起作用

Offset Top Not Working In IOS

这里是完整的代码http://jsfiddle.net/vinex08/uhm26em1/

jQuery(function ($) {
var distance = $('.c').offset().top,
    $window = $(window);

$window.scroll(function () {
    if ($window.scrollTop() >= distance) {
        $(".b").css({
            position: 'fixed',
            top: '0'
        });
    } else {
        $(".b").css({
            position: 'inherit',
            top: '10'
        });
    }
});
});`

它在 Chrome 和 Firefox 上工作,但是当我通过 iPad AIR 和 iPhone 检查它时,效果甚至在 'class c' 到达顶部之前就执行了。

这里我们已经知道了移动版 Safari 的修复。 首先检测浏览器;其次,稍微改变 'offset' 函数的行为:

// mobile Safari reports wrong values on offset()
// http://dev.jquery.com/ticket/6446
if ( /webkit.*mobile/i.test(navigator.userAgent)) {
  (function($) {
      $.fn.offsetOld = $.fn.offset;
      $.fn.offset = function() {
        var result = this.offsetOld();
        result.top -= window.scrollY;
        result.left -= window.scrollX;
        return result;
      };
  })(jQuery);
}

将此代码放在 jquery 初始化之后但偏移计算之前的某处。

希望对您有所帮助:

jQuery(function ($) {
    var distance = $('.c').offset().top;
    $(window).scroll(function () {
        var wndwTop = $(this).scrollTop();
        if (wndwTop >= distance) {
            $(".b").css({
                position: 'fixed',
                top: '0'
            });
        } else {
            $(".b").css({
                position: 'inherit',
                top: '10'
            });
        }
    });
});