2015-10-12 44 views
9

O Chrome ve Firefox üzerinde çalışan tam kod http://jsfiddle.net/vinex08/uhm26em1/Ofset Üst Çalışmıyor ise IOS

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

ama ben iPad AIR ve iPhone üzerinden kontrol ettiğimizde, etkisi bile 'sınıf c' önce yürütür üst.

+0

'pozisyonunu kullanmayı deneyin() top' http://jsfiddle.net/Lt9g39md/ – Tushar

+0

hala aynı :( –

+0

sen örneğini çalışan bir _real_ var mı. kodunuzu (JSFiddle'ta değil) aynı şekilde davranıyor? –

cevap

3

ben bu yardımcı olacağını umuyoruz:

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

Sorunu çözdüğünüzü açıklayabilir misiniz? Birkaç değişkene eklemenin dışında bir fark görmüyorum. – allicarn

2

Mobil Safari için düzeltme yaptık. İlk olarak, tarayıcıyı tespit edin; ikincisi, 'offset' fonksiyonunun biraz değişiklik davranışı:

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

Place Bu kod bir yere jquery başlatmasından sonra, ancak ofset hesaplamaları önce.

+0

Bu pencereyi kullanmadan önce window.scrollY ve window.scrollX varlığını kontrol ediyorum, aksi takdirde safari mobil yapısının ileride değişmesi durumunda NaN sonucunu alabilirsiniz. – omerkarj

+0

Geriye uyumluluktan kurtulun.Ama yine de bunu yapmak istiyorsanız, 'result.top - = window.scrollY;' ile 'result.top - = window.scrollY || 0;' ve 'result.left - = window.scrollX; 'ile sult.left - = window.scrollX || 0'. – Yeti

+0

Hata raporuna bağlantı güncellendi: https://bugs.jquery.com/ticket/6446 – allicarn