偏移顶部不在IOS中工作

时间:2015-10-12 06:38:42

标签: javascript jquery offset

以下是完整的代码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”达到顶部之前就会执行。

2 个答案:

答案 0 :(得分:3)

我希望这会有所帮助:

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'
            });
        }
    });
});

答案 1 :(得分:2)

这里我们已经了解了移动Safari的修复方法。 首先,检测浏览器;其次,'偏移'的一点改变行为。功能:

// 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初始化之后但在偏移计算之前将此代码放在某处。