Ternyata saya pernah menemukan beberapa perilaku abnormal pada daftar UL di tempat kerja.
Selain itu, saya melihat postingan http://bbs.blueidea.com/thread-2984871-1-1.html kemarin, jadi saya menguji berbagai atribut gaya daftar dan menemukan fenomena menarik.
Mari kita lihat penjelasan list-style pada manual CSS terlebih dahulu.
Definisi dan penggunaan
Atribut singkatan gaya daftar menyetel semua properti daftar dalam satu deklarasi.
menjelaskan
Properti ini adalah properti singkatan yang mencakup semua properti gaya daftar lainnya. Karena ini berlaku untuk semua elemen dengan tampilan item daftar, ini hanya dapat digunakan pada elemen li dalam HTML dan XHTML normal, namun sebenarnya ini dapat diterapkan ke elemen apa pun dan diwarisi oleh elemen item daftar.
Properti berikut dapat diatur secara berurutan:
• tipe gaya daftar
•posisi-gaya-daftar
•daftar-gaya-gambar
Tidak perlu menetapkan salah satu nilai. Misalnya, "gaya daftar:lingkaran di dalam;" juga diperbolehkan. Properti yang tidak disetel menggunakan nilai defaultnya.
Nilai default: tidak ada disk di luar
Dalam pekerjaan sehari-hari, sering kali perlu melakukan reset css pada ul dan li untuk menyembunyikan simbol daftar.
Cara penulisan yang paling umum digunakan adalah Ul,li,ol{list-style:none;} (beberapa orang juga menggunakan ul,li,ol{list-style-type:none;})
Jalankan kotak kode
[Ctrl+A Pilih Semua Tip: Anda dapat memodifikasi sebagian kode terlebih dahulu lalu tekan Jalankan]
Tidak ada masalah dengan halaman ini di IE6, 7, 8, dan FF.
Namun yang tidak bisa kita abaikan adalah list-style: berisi tiga atribut:
tipe gaya daftar
posisi gaya daftar
daftar-gaya-img
Jika Anda tidak memperhatikan ketiga atribut ini, gaya daftar terkadang akan menimbulkan masalah.
Misalnya, ketika ul, setelah mengambang, memerlukan display:inline untuk menyelesaikan masalah margin ganda di IE6, sesuatu yang aneh terjadi:
Jalankan kotak kode
[Ctrl+A Pilih Semua Tip: Anda dapat memodifikasi sebagian kode terlebih dahulu lalu tekan Jalankan]
.ul01{float:kiri;tampilan:sebaris;}
.ul01,.ul01 li{gaya daftar:tidak ada;}
Halaman di atas masih normal di IE8 dan ff, namun di IE6 dan 7 ada jarak antara bagian dalam ul dan li.
Terlihat ketika kita mendefinisikan list-style:none, walaupun simbol list tidak muncul, namun posisinya masih tertinggal di IE6 dan 7.
Lihat atribut apa saja yang dimiliki UL ini di FF
Terlihat dari gambar, ketika list-style:none didefinisikan di css, tidak berpengaruh pada list-style-position. Ini masih merupakan setting default browser FF, dan nilainya di luar.
Di IE6 dan 7, list-style-position: inside kemungkinan besar menjadi default
Untuk mengonfirmasi hal ini, saya mengubah list-style:none menjadi list-style:none di dalam none dan mengujinya lagi
Jalankan kotak kode
[Ctrl+A Pilih Semua Tip: Anda dapat memodifikasi sebagian kode terlebih dahulu lalu tekan Jalankan]
Setelah menjalankannya, Anda dapat menemukan bahwa di IE6 dan 7, perilakunya persis sama dengan list-style:none.
Jadi saya berspekulasi bahwa di IE6 dan 7, ketika UL memiliki atribut float:left dan display:inline dan list-style:none disetel, list-style-position juga default ke inside;
Jadi kesimpulan yang saya dapatkan adalah bahwa di bawah IE6 dan 7, ketika UL tidak memiliki float:left;display:inline;:
Terlepas dari apakah ada atribut list-style:none, simbol daftar disembunyikan dan tidak menempati ruang (5, 6 pada kode di bawah)
Ketika UL memiliki atribut float:left;display:inline;
list-style:none, simbol list disembunyikan, namun posisinya tetap di kiri (list-style-position:inside);
list-style:none tidak disetel; karakter daftar disembunyikan dan tidak menempati posisi (list-style-position:outside) (kode UL4)
UL02 berkinerja relatif baik di semua browser yang berpartisipasi dalam pengujian ini.
Potongan kode terakhir ini membandingkan kinerja gaya daftar dalam berbagai keadaan, terutama kinerja 4, 5, dan 6 pada IE6 dan 7.
Jalankan kotak kode
[Ctrl+A Pilih Semua Tip: Anda dapat memodifikasi sebagian kode terlebih dahulu lalu tekan Jalankan]
Dengan membandingkan hasil kinerja kode di atas, menurut saya:
Di Firefox, selama tipe gaya daftar tidak ada, tidak peduli nilai posisi tipe daftar di luar atau di dalam, gaya daftar dapat disembunyikan dengan baik. Di IE6 dan 7, hanya gaya daftar: tidak ada yang disetel , tidak cukup untuk menyelesaikan semua masalah, jadi menurut saya lebih baik menggunakan list-style:none di luar none ketika css direset.