Saya mempunyai grid CSS 2×2 yang mengisi port pandangan penyemak imbas menggunakan kedudukan tetap. Ia kelihatan seperti ini:
----------------- | |xxxxxxxxxxxxx| ----------------- |x| | |x| | |x| | |x| | -----------------
Baris atas dan lajur kiri masing-masing sesuai dengan kandungannya dan bersaiz auto
。底行和右列分别用于占用任何剩余空间并具有大小 1fr
.
Sel Timur Laut dan Barat Daya (diisi dengan X dalam imej) kedua-duanya adalah ibu bapa Flex yang boleh ditatal. Ia mengandungi sebarang bilangan elemen kanak-kanak, dan nombor itu mungkin berubah secara dinamik. Saya menambah overflow
属性设置为 auto
pada setiap sifat dan menggayakan bar skrol menggunakan set peraturan ini:
.scrollable::-webkit-scrollbar { height: 10px; width: 10px; } .scrollable::-webkit-scrollbar-thumb { background: darkgray; } .scrollable::-webkit-scrollbar-track { background: #666666; }
Apabila saya memuatkan halaman dalam Chrome pada macOS, bar skrol menindih kandungan sel barat daya. Kemudian apabila saya mengubah saiz tetingkap penyemak imbas, lajur kiri mengembang untuk menampung bar skrol (yang sudah muncul sebagai tindanan) dan ia bergerak ke kanan kandungan.
Saya mahu bar skrol tidak menutup kandungan sama sekali, dan saya benar-benar ingin menghapuskan peralihan reka letak pada acara ubah saiz yang tidak berkaitan. Adakah anda tahu bagaimana saya boleh mencapai matlamat ini?
Pen kod ini ialah contoh minimum yang boleh dihasilkan semula. Walau bagaimanapun, ia tidak kelihatan konsisten kepada saya. Apabila saya memuat semula halaman, kadangkala bar skrol dilindungi dan kadangkala lajur cukup lebar untuk bar skrol dipaparkan di sebelah kanan kandungan. Saya melihat liputan dan saiz yang salah menjadi lebih konsisten pada halaman kendiri ini.
Untuk mengelakkan ini, grid perlu mengemas kini dimensinya dan mengambil kira bar skrol. Soalan lain ialah bagaimana untuk melakukan ini hanya menggunakan css. Saya menganggapnya sebagai
grid-template-columns
应用animation
dan nampaknya berkesan:Jika anda mahu melakukannya dengan JavaScript: