iOS'ta kaydırma yaparken bir performans sorununu takip ediyorum. Hem touchstart
hem de touchend
'da, Safari geçersiz kılar ve stilleri yeniden hesaplar; bu da, kaydırma işleminden önce hafif bir gecikmeyle sonuçlanır. Safari'nin araçlarında bir "başlatıcı" sütun var, ancak testlerimde boş.iOS Safari'de "Stilleri Geçersiz" olarak neyin neden kaynaklandığını nasıl belirlerim?
denedim:
- kaydırma elemanı üzerinde
will-change: transform;
veyatransform: translateZ(0);
ya uygulanıyor. Bu, Chrome'da büyük ölçüde yardımcı oldu, ancak iOS Safari için hiçbir şey yapmıyor. Profiler hala stillerin yeniden hesaplandığını bildiriyor. - (sadece jQuery ve benim testlerde Açısal çekirdek kod idi) profilcisine tarafından bildirilen bunu çoğaltmak için Paul Irish's list of things that force layout/reflow
- içinde olup olmadığını görmek için
position: fixed;
- Javascript her satırı incelenmesi sahip DOM tüm elemanlarının çıkartılması Android’de Chrome’un yıldız araçlarını başarıyla kullanabildim. Sorun, yalnızca masaüstü Safari'den ayıklanabilen iOS Safari'yi etkiliyor.
Stillerimin neden iOS Safari'de geçersiz kılınacağını nasıl belirleyebilirim? Ben benzer bir sorunu debug zaman
Bu, iOS'ta bilinen bir "sorun" dur, bkz: https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away. Azaltmak yardımcı olmak için Fastclick.js kullanın ve ben 8 daha sonra bu sürüm gecikme "özelliği" kaldırmak iOS sonra yeni sürümleri düşünüyorum. Umarım yardımcı olur! –
Bunun aynı olduğundan emin değilim. Scrolling, sayfalar için daha basit bir DOM yapısına sahip daha hızlı yanıt veriyor, bu statik bir gecikme değil. Bunun stil geçersiz kılma ile ilgili olduğundan eminim. – adamdport
Aynı sorunla karşı karşıya kalan ve çalışılan tek yol, her animasyonlu materyali tek bir sayfada incelemekti ve devre dışı bırakmayı deneyin ve yardımcı olup olmadığını kontrol et. Benim durumumda, reflow, iyonik olan bileşeninin "animated = 'true'" parametresinden kaynaklandı. –