Rumah > hujung hadapan web > tutorial css > CSS: mempunyai pemilih (dan 4 contoh)

CSS: mempunyai pemilih (dan 4 contoh)

Christopher Nolan
Lepaskan: 2025-03-26 10:38:11
asal
499 orang telah melayarinya

CSS: mempunyai pemilih (dan 4 contoh)

CSS :has() pemilih merevolusikan pemilihan elemen dengan mensasarkan ibu bapa berdasarkan sifat anak -anak mereka. Ia lebih daripada sekadar "pemilih ibu bapa" -it menawarkan keupayaan gaya bersyarat yang kuat. Contohnya, anda boleh gaya<div> elemen hanya jika mereka mengandungi a<code><p> :</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> Div: mempunyai (p) { Latar Belakang: Merah; }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p> Walaupun sebelum ini tidak disokong <code>:has() kini mendapat daya tarikan, muncul dalam Pratonton Teknikal Safari 137.

Mari kita meneroka senario lain: Menambah jarak selepas tajuk, tetapi menyesuaikan jarak jika sari kata hadir:

 H2,
.subtitle {
  Margin: 0 0 1.5rem 0;
}
.Header-Group: mempunyai (H2): mempunyai (.subtitle) H2 {
  margin: 0 0 0.2rem 0; / * Mengurangkan jarak disebabkan oleh sarikata */
}
Salin selepas log masuk

Perhatikan chaining of :has() pemilih: .header-group:has(h2):has(.subtitle) . Ini berbeza daripada menggunakan senarai pemilih dalam :has() , seperti .header-group:has(h2 .subtitle) . Pendekatan rantaian memilih<h2></h2> hanya jika .header-group mengandungi kedua-dua<h2></h2> dan a .subtitle . Pendekatan senarai pemilih, bagaimanapun, mempunyai logik pemilihan yang berbeza.

Pertimbangkan :has() sebagai pemilih ibu bapa pseudo-kelas. Ia membolehkan unsur-unsur induk gaya yang bersesuaian berdasarkan anak-anak mereka, pemergian yang signifikan dari pendekatan atas ke bawah CSS tradisional. Keupayaan ini membuka banyak kemungkinan sebelum ini tidak dapat dicapai dengan CSS sahaja.

Pautan gaya yang mengandungi imej:

 A: mempunyai (> img) {
  Sempadan: 20px Pepejal Putih;
}
Salin selepas log masuk

> img memastikan imej adalah anak langsung dari<a></a> . :has() juga boleh digunakan untuk margin/padding bersyarat berdasarkan kandungan.

:has() adalah sebahagian daripada pemilih CSS Level 4, di samping berguna :not kelas pseudo. Ia jauh lebih kuat daripada pemilih ibu bapa yang mudah; Ia membolehkan memilih elemen kanak -kanak berdasarkan kandungan ibu bapa. Contohnya:

 /* Gaya elemen dengan a<figcaption> anak */
Rajah: mempunyai (figcaption) {...}

/* Gaya<img  alt="CSS: mempunyai pemilih (dan 4 contoh)" > dalam a<figure> mengandungi a<figcaption> */
Rajah: mempunyai (figcaption) img {...}</figcaption></figure></figcaption>
Salin selepas log masuk

Senarai Chaining dan Selector disokong:

 Artikel: mempunyai (h2): mempunyai (ul) {...} // dirantai
Artikel: mempunyai (h2, ul) {...} // senarai pemilih
Salin selepas log masuk

Walau bagaimanapun, sedar bahawa pemilih yang tidak sah dalam senarai akan membatalkan keseluruhan :has() pemilih. Gunakan :where() atau :is() untuk pengendalian yang lebih mantap pemilih yang berpotensi tidak sah.

Ujian untuk sokongan:

 @Supports (pemilih (: mempunyai (p))) {
  /* Disokong! */
}
Salin selepas log masuk

The :not() pemilih, juga dari CSS Selectors Level 4, menawarkan sokongan penyemak imbas yang sangat baik dan kebolehbacaan yang lebih baik:

 ul li: tidak (: jenis pertama) {
  warna: merah;
}
Salin selepas log masuk

Gaya ini semua item senarai kecuali yang pertama. Teknik yang sama boleh digunakan untuk margin:

 ul li: tidak (: jenis terakhir) {
  Margin-Bottom: 20px;
}
Salin selepas log masuk

CSS Selectors Level 4 juga termasuk :is() , menawarkan alternatif ringkas kepada pemilih yang panjang:

 : adalah (seksyen, artikel, selain, nav): adalah (H1, H2, H3, H4, H5, H6) {
  Warna: #Bada55;
}
Salin selepas log masuk

Ringkasnya :has() , bersama -sama dengan :is() dan :not() , menyediakan cara yang kuat dan boleh dibaca untuk elemen gaya berdasarkan hubungan kompleks dalam DOM.

Bacaan lanjut:

  • Adrian Bece - Bertemu :has() , pemilih ibu bapa CSS asli (dan banyak lagi)
  • Bramus Van Damme - The CSS :has() pemilih adalah cara lebih daripada "pemilih ibu bapa"
  • Michelle Barker - :has() telah mendarat di Safari

Atas ialah kandungan terperinci CSS: mempunyai pemilih (dan 4 contoh). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan