2016-02-11 37 views
13

'da hızlıca aşağı kaydırdığımda sabit öğeler tıklanamıyor. Sadece iOS Safari 9+ (8.4 iyi) konusunda çok sinir bozucu bir sorunla karşılaşıyorum. Kullanıcı tekrar kaymaya başlayana kadar, eleman ile hizalanmayan görünüm ve gerçek tıklama/vurma alanı nedeniyle artık sabitleştirilebilen sabit elemanlar içindeki sabitleme bağlantıları ile sonuçlanır.iOS Safari 9+

Her seferinde aynı şekilde olmaz ve sistemi "parçalamak" için birkaç deneme yapabilir. Bunun çalışması için içerik görüntü alanından daha uzun olmalıdır.

iOS 9+ Safari Fixed:Position Scroll Issue Screen Recording

henüz sorunun yok geçici çözümler. Bu sorunu nasıl çözebilirim?

GÜNCELLEME: Daha fazla test edildikten sonra, sorun yalnızca iOS Safari 9 ve üstü sürümlerde, iOS 8'de test edilmiştir ve sorun yoktur.

GÜNCELLEME 2: Bu position:fixed; ve hatta position:-webkit-sticky; kullanarak en web sitelerinde olur artık açık. Size ait :)

HTML kontrol etmek isteyebilirsiniz

<section> 
    <article></article> 
    <article></article> 
    <article></article> 
</section> 

<div class="sticky"> 
    <a href=""></a> 
</div> 

CSS:

html, body { 
    margin:0; 
} 

article { 
    display: block; 
    height: 200px; 
    width: 100%; 
    margin-bottom: 20px; 
    background: whitesmoke; 
} 

.sticky { 
    width:100%; 
    height:100px; 
    position: fixed; 
    bottom:0; 
    background: orange; 
    text-align:center; 

} 

.sticky a { 
    display: inline-block; 
    width: 100px; 
    height: 100px; 
    background: yellow; 
} 

http://codepen.io/toobulo/pen/dGEodo

bu kadar olduğu gibi mesele, Codepen editörü içinde olmaz Mobil Safari'nin elastik/araç çubuğu boyutu değişiklikleriyle ilgili. Kendi sayfasına kodu belgeyi veya şu bağlantıyı kullanın:

https://cdn.rawgit.com/anonymous/3234ad797dd80e5f8905/raw/ab51c4d8621cfb827f83a33d21940579f8682cde/index.html

cevap

4

Bu sorun ios içinde sıçrama etkisi ile ilgilidir ve araç çubuğunu & başlık çubuğu kaybediyor. Bunu düzeltmek için bulduk tek yolu aşağıdaki yapmaktır:

html, 
body { 
    height: 100%; 
    width: 100%; 
    overflow: auto; 
    -webkit-overflow-scrolling: auto 
} 

Siz de sadece mobil için çalışır böylece kesme noktası yapabiliriz. Bu yardımcı olur umarım. Taşma kaydırması eklendi.

+0

, böyle JavaScript calculations- örn gibi çeşitli alanlar için solucanlar yeni kutu açar: 'var kaydırma = $ (pencere) .scrollTop(); eğer (scroll> = 10) {// birşeyler yapın} ' – Joe

+0

@Joe Bunu, soru gereksinimlerinin bir parçası olarak eklemelisiniz. –

+1

@ZachSaucier Sorunu, çeşitli önerilen düzeltmelerden kaynaklanan yepyeni gereksinimlerle aşmak istemedim Davranışın en basit haliyle çözüleceğini umarak (JS ile ilgili sorunlar olmadan), bu yüzden benim yorumum bu cevapta uyuyor, değil mi? – Joe

-1

.sticky a bağlantı mutlak ve aşağıdaki CSS'yi uygulayabilirsiniz, böylece bağlantı pencere/tarayıcıdan bağımsız olacaktır. Bu geçici çözüm sorunu giderir iken

.sticky { 
    width: 50px; 
} 
.sticky a { 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    margin: auto; 
} 
+0

Bu, görüntü boyutuna değil, görünüm noktasına göre Sabit konumlandırmaya ihtiyacım olduğu için yardımcı olmaz. Çözümünüzle, div uzun bir sayfa ile kayar. – Joe

+1

Tamam, daha sonra, her bir kaydırmadaki ** (rQuery öğesinin) ** değerini kullanarak hesaplamayı (var1) = (viewport yüksekliği) ve (var2) = (görünümün sayfadaki en alt konumu) hesaplamayı deneyebilir ve hesaplayabilirsiniz: (orta nokta) = (var2 - (var1)/2). Umarım anladın. Daha sonra bloğunuzun pozisyonunu dinamik olarak ** mid_point ** olarak ayarlayabilirsiniz. –

+0

Teşekkürler, her ne kadar kullanarak çözmek için güzel olurdu: Sabit; ve ek bir JS yok, yardımınıza minnettarım ve bunu son çare olarak deneyeceğim. :) – Joe