CodeBlanks Logo Icon CodeBlanks

:where ve :has

CSS kursu · Orta seviye · Ders 27/98

:where ve :has sözde sınıflarını öğrenirsin.

:where sözde sınıfı

:where() işlevi, içine yazdığın seçici listesini gruplar; tek bir seçici gibi davranır. En önemli özelliği öncelik katkısı sıfır olmasıdır.

:where(h1, h2, h3) { color: navy; } yazarsan, üç başlık da navy olur; ama öncelik sıfır olduğu için herhangi bir sınıf seçici bu değeri kolayca geçersiz kılar. Tema iskeletinde güvenli bir taban için idealdir.

:has sözde sınıfı

:has() işlevi bir öğenin içeriğine bakar. İçine yazdığın seçiciye uyan bir alt öğesi varsa, hedef öğeyi eşleştirir. Bu yüzden ebeveyn seçici olarak da bilinir.

a:has(> img) yazarsan, içinde doğrudan bir görsel taşıyan tüm a etiketlerini seçersin. Önceden yalnızca JavaScript ile yapılan bu denetim artık tek satır CSS'te. Bu, görsel bağlantılarına özel stil vermek için birebirdir.

Gerçek kullanım: kart ebeveyn

:has'in gücü, içeriğe göre ebeveyni biçimlemekte yatar. Bir kart içinde görsel varsa kenarlık ekle, yoksa ekleme — tek satırda halledilir.

.card:has(img) { padding: 0; } yazarsan, içinde görsel taşıyan kartların iç boşluğu sıfırlanır; görsel kartın kenarlarına kadar uzanır. Bu davranış önceden yalnızca JavaScript ile mümkündü.

Uygulama Görsel bağlantılarını blok yap

Bir a:has(> img) seçicisi yaz ve içine display: block bildirimi ekle. Böylece içinde doğrudan görsel taşıyan bağlantılar blok öğesine dönüşür.

Örnek çözümü göster
/* görsel bağlantılarını düzenle */
a:has(> img) {
  display: block;
}

Kendini test et

  1. h1'in rengi ne olur?

    :where(h1, h2) {
      color: navy;
    }
    h1 {
      color: red;
    }
    • red — h1 seçicisi kazanır
    • navy — :where geçerli olur
    • Tarayıcı hata verir
    • Renk değişmez
    Cevabı göster

    red — h1 seçicisi kazanır — Doğru. :where öncelik katkısı sıfırdır; h1 seçicisi daha yüksek öncelikle yener.

  2. Görsel içeren bağlantıyı seç

    a____ {
      display: block;
    }
    Cevabı göster
    a:has(img) {
      display: block;
    }
  3. Sözde sınıfı görevine eşle

    :where(h1, h2)
    Öncelik sıfır gruplama
    :has(> img)
    Görsel taşıyan ebeveyn
    :where(.btn)
    Kolayca geçersiz kılınan taban
    :has(.badge)
    Rozet taşıyan öğe

Orta seviye bölümündeki tüm dersler