Mengikuti sedikit kode saya. Hanya ingin tahu mengapa sel "iPhone" berkedip hanya dari iPhone. PS. Saya tidak bisa menggunakan tabel atau daftar untuk struktur. Saya juga mencoba menggunakan transform: translate3d(0,0,0);
.
Pada dasarnya saya membutuhkan sel pertama untuk menjadi lengket baik untuk Kiri dan Atas pada iPhone dan iPad juga. Saya ingin melakukan itu menggunakan HTML dan CSS saja.
PENTING
Tolong, jangan jawab dengan solusi tetap , saya tidak tahu di mana meja akan ditempatkan di tubuh. Akan ada tajuk, beberapa konten, dll.
.table {
width: 2000px;
position: relative;
}
.tr {
overflow: visible;
display: block;
white-space: nowrap;
font-size: 0;
}
.tc {
border: 1px solid #DDD;
display: inline-block;
width: 100px;
height: 100px;
text-align: center;
font-size: 12px;
}
.trh {
background: #000;
color: #FFF;
position: -webkit-sticky;
position: sticky;
top: 0;
z-index: 1;
}
.tc.first {
background: #000;
color: #FFF;
position: -webkit-sticky;
position: sticky;
left: 0;
}
<div class="table">
<div class="tr trh">
<div class="tc first">Iphone</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
<div class="tc">value</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">2</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
<div class="tr">
<div class="tc first">a set</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
<div class="tc">0</div>
</div>
</div>
Jawaban:
Saya melawan keanehan dengan iOS vs yang lainnya sepanjang waktu. Ini biasanya melibatkan masalah konteks susun. Tampak bagi saya bahwa elemen
position: sticky
danleft: 0
menjadi relatif terhadap baris pertama di iOS. iOS tidak menangani konteks penumpukan yang sama dengan semua browser lainnya.Saya tidak pernah benar-benar tahu persis apa yang menyebabkan ini. Secara teknis sel iPhone Anda macet ke kiri bahkan ketika sedang bergulir karena itu relatif terhadap induknya yang tidak memilikinya
left: 0
. Saya berasumsi ini ada hubungannya dengan bagaimana iOS menanganiposition: sticky
. Sticky mulai relatif dan kemudian berubah menjadi diperbaiki. Semua browser lain pada saat itu akan membuatnya tetap di kiri. Anda memilikiposition: sticky;
elemen di dalamposition: sticky;
elemen. Itu adalah konteks susun baru. Saya percaya iOS membuatnya tetap untuk orang tuanya dan bukan seperti yang Anda harapkan. Karena baris induk tidak punyaleft: 0
itu akan bergulir dengan yang lainnya. Saya harap ini membantu. Saya tidak melihat kerlipan, tetapi saya memiliki beberapa komponen yang rusak dalam kerangka web perusahaan saya setelah iOS 13 keluar yang melibatkan konteks pengguliran dan penumpukan. Saya akan menguji pada beberapa perangkat iOS.sunting setelah bermain-main lagi dengan itu, saya yakin itu adalah masalah konteks susun. Saya memutar indeks-z hingga 1000 hanya pada sel iphone dan baris di bawah MASIH muncul di atasnya.
Jika Anda tidak harus mendukung internet explorer, saya akan menggunakan kisi-kisi CSS untuk mencapai tata letak ini. Maka Anda tidak perlu khawatir
position: sticky
https://css-tricks.com/snippets/css/complete-guide-grid/
https://css-tricks.com/using-css-grid-the-right-way/
Saya menggunakannya untuk data dinamis konten berat dalam aplikasi bisnis sehingga bisa sangat fleksibel jika dimanfaatkan dengan baik.
Diperbarui Lagi - Jika Anda tidak dapat mengubah DOM sama sekali maka Anda harus berurusan dengan kedipan karena bahkan solusi kisi akan membutuhkan pembungkus di sekitar beberapa elemen. Hanya untuk memperjelas .... Dengan solusi kisi, Anda TIDAK perlu tahu berapa banyak kolom atau baris yang akan Anda miliki. Anda sepertinya menutup telepon pada aspek itu. Area kisi juga menciptakan konteks susun baru dan membuat segalanya relatif terhadap area kisi yang ada di dalamnya sekaligus memungkinkan unit yang fleksibel. Saya tidak bisa memberikan jawaban sampai Anda menunjukkan bagaimana data dinamis Anda masuk. Kami membutuhkan lebih banyak konteks untuk memberikan solusi kode kepada Anda.
Sekali lagi, kerlipan ini terjadi karena Anda memiliki elemen lengket di dalam elemen lengket lainnya. Itu hanya iOS dan jika Anda ingin menggunakannya seperti ini, Anda harus menghadapinya saja.
Berikut dokumentasi tentang menumpuk konteks dan cara kerjanya. Seperti yang saya nyatakan dalam komentar, Anda harus mengambil pendekatan yang berbeda atau hanya menghadapinya.
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
Juga -
Sembunyikan limpahan pada HTML dan Tubuh Anda. Letakkan pembungkus di sekitar meja. Masukan
-webkit-overflow-scrolling: auto
ke bungkusnya. Jalankan di iOS 12 dan Anda akan melihatnya tidak berkedip. Anda tidak akan memiliki momentum bergulir. iOS13 menghapus kebutuhan untuk-webkit-overflow-scrolling
sehingga Anda bahkan tidak bisa menimpanya . Jika Anda memberi nilaitouch
pada-webkit-overflow-scrolling
Anda sekarang akan mendapatkan berkedip. Jalankan kode ini di bawah dan Anda akan melihatnya tidak berkedip. Singkat cerita, seperti yang telah saya katakan berkali-kali Anda HARUS menemukan pendekatan yang berbeda. Anda tidak dapat memperbaiki ini sekarang karena iOS13 sedang keluar dan Anda benar-benar tidak ingin menonaktifkan momentum bergulir.sumber
Jika Anda mengatur ulang elemen, Anda dapat mencapai ini.
sumber