2013-04-16 20 views
18

Düzenim oldukça basit, yinelenen bir arka plan öğesi, birkaç dikey boşluk (yol) ve bazı yatay köprüler ve sürmesi gereken küçük bir araba Kaydettiğinizde bunların altında.Bir iOS aygıtında kaydırma yaparken, öğelerin z-endeksi çalışmıyor

Her şey Mac'imde, ancak iOS aygıtlarında çalışıyor — test aygıtlarım: iOS 6.1'de iPhone 4, iOS 6.1.3'teki iPad 2 - kaydırma etkinliği etkin olduğunda z-index onurlandırılmıyor.

Bu

kayarken, window için position: fixed olan otomobil, olması gerektiği gibi köprü yüksek yapım z-index yerine ("otomobil" den z-index yüksek olan) köprü üzerinde hareket demektir ve arabayı köprünün altından yapan iOS olmayan tarayıcılarda.

Basit bir katmanlama sorunu gibi görünüyor, ancak çok basitleştirilmiş bir test durumu ile bile hata hala belirgindir.

Test durumda:

kimse koduyla neyin yanlış olduğunu biliyor mu

http://plnkr.co/EAE5AdJqJiuXgSsrfTWH (demo içeriğiyle ilgili olmayan bir iframe kaydırma sorunu önlemek için iPad'de tam ekran görüntüle) neden olur kaydırma etkinken z-index çalışmıyor mu?

Not: Bu, hem iOS'ta hem de yerel Mobil Safari'de gerçekleşir.


İşte yukarıdaki durumda birileri demo açmadan bir düzeltme işaret edebilir bağlantılı reduced test case çalışan kodun parçalarıdır.


HTML:

<!DOCTYPE html> 
<html> 

    <head> 
    <link rel="stylesheet" href="style.css"> 
    </head> 

    <body> 
    <div class="car"></div> 

    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    <div class="bridge"></div> 
    <div class="street"></div> 
    </body> 

</html> 

CSS:

body { 
    /* Adds the 'road' as a background image. */ 
    background: #8BA341 url("http://f.cl.ly/items/1r2g152h2J2g3m1e1V08/road.png") repeat-y top center; 
    margin:  0; 
    padding: 0; 
} 

.car { 
    /* The car's position is fixed so that it scrolls along with you. */ 
    position: fixed; 
    top:  5%; 
    left:  52%; 
    width:  220px; 
    height:  330px; 
    background: #BD6C31; 
    z-index: 1; 
} 
.street { 
    /* Empty in the example, just used to space things out a bit. */ 
    position: relative; 
    height:  500px; 
} 
.bridge { 
    /* A bridge crossing the main road. The car should drive under it. */ 
    position: relative; 
    height:  353px; 
    /* Image of repeating road. */ 
    background: url("http://f.cl.ly/items/0u0p2k3z45242n1w3A0A/bridge-road.png") repeat-x center left; 
    /* Higher z-index than car. */ 
    z-index: 2; 
} 
+2

Bu soruya başka birinin gelmesi durumunda… asıl soru tamamen cevaplandırılmasa bile (normal z-indeks yığınlama sırasının neden doğru kullanılmadığını hala bilmiyorum) çalışmak için arka plan öğeleri ve aracın kendisi için negatif bir z-endeksi kullanıyor. Dolayısıyla araç negatiftir, üstgeçit/köprü pozitif bir z dizini üzerindedir ve daha sonra iOS doğru bir şekilde işler. – Jannis

+0

Ben aynı sorunu yaşıyorum ve negatif z-endeksi çözüm gerçekten hile yapar ama ne yazık ki başka bir sorun ortaya çıkarır: etiketleri negatif z-endeksleri linkleri kırar. Yine de paylaştığın için teşekkürler, eğer bir şey bulursam parçamı yapacağım ama şu anda sıkışıp kaldım. – ChristopherC

+0

Bir geçici çözüm aramaya devam ediyorum, ancak bu arada burada bazı soruşturmaların sonuçları var: http://plnkr.co/aeubN4 Eğer haklıysam, bu konuda yapabileceğimiz bir şey olup olmadığından emin değilim? – ChristopherC

cevap

36

ben çok deneme yanılma sonra bu çözdük inanıyoruz. Yaptığım şey köprülere bir webkit transform eklemekti.

yeni CSS:

.bridge { 
    -webkit-transform: translate3d(0,0,0); 
} 

titreşimi düzeltmek için sadece görünen farklı köprülere çevirmek ekleme Bu pozitif Z-endeksi numaraları (10, araba, 1 de çukuru, 20'ye köprü) izin verir daha önce, ama aynı zamanda herhangi bir gecikme olmaksızın hemen kaydırma yapmanızı sağlar. full screen veya full Plunker numaralı telefondan veya full Plunker numaralı telefondan kontrol ediniz. IPad iOS 6.0.1'de test edildi.

+3

Günlerce mücadeleden vazgeçmeye başladım ama çözümünüz de benim durumumda harika çalışıyor, teşekkürler! – ChristopherC

+0

Bizzare bug, çözümünüz bizim için de düzeltildi! –

+0

Sevindim Yardımcı olabilirim! –

İlgili konular