Adakah Pemilih :not() Melanjutkan kepada Keturunan Jauh?
Dalam CSS3, kelas pseudo :not() menyediakan cara untuk mengecualikan elemen tertentu daripada pemilih. Walau bagaimanapun, tingkah lakunya boleh mengelirukan apabila berurusan dengan keturunan yang jauh.
Pelaksanaan Semasa
Menurut dokumentasi rasmi dan analisis sokongan penyemak imbas, pemilih :not() sahaja terpakai untuk mengarahkan anak atau cucu elemen yang disasarkan.
Pertimbangkan ini contoh:
div *:not(p) { color: red; }
Peraturan ini akan menggayakan semua anak langsung atau cucu
elemen.
Walau bagaimanapun, pemilih :not() tidak melebihi anak cucu.
Isunya
Dalam contoh ini,
:
<div> <ul> <li>This is red</li> </ul> <p>This is NOT</p> <blockquote><p>This is red but is not supposed to be!</p></blockquote> </div>
Dalam kes ini,
elemen sepadan dengan keadaan *:not(p) kerana ia adalah keturunan, manakalaelemen di dalamnya mewarisi warna merah.
Penyelesaian
Tingkah laku yang betul adalah untuk
elemen kekal sebagai warna lalainya. Untuk mencapai matlamat ini, peraturan harus menyasarkan semua
elemen secara langsung:
div p { color: black; }Salin selepas log masukPeningkatan Masa Depan dalam Pemilih CSS Tahap 4
Cadangan Pemilih CSS Tahap 4 meningkatkan pemilih :not() untuk menerima pemilih kompleks penuh dengan penggabung. Ini bermakna bahawa kami akan dapat menulis pemilih seperti:
p:not(div p) { color: red; }Salin selepas log masukSntaks lanjutan ini akan membolehkan penyasaran yang lebih tepat bagi keturunan jauh.
Atas ialah kandungan terperinci Adakah CSS `:not()` Menyasarkan Anak dan Cucu Terpilih Sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!