0Pricing
CSS Academy · Ders

:has() İlişkisel Sözde Sınıfı

Güçlü :has() ilişkisel sözde sınıfını kullanarak alt öğelerine göre üst öğeleri seçin.

:has() İlişkisel Sözde Sınıfı, CoddyKit'te ücretsiz bir CSS Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, CSS Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. CSS Academy kursu toplamda 4 dersten oluşur.

:has() Nedir?

:has() sözde sınıfı, bağımsız değişkenle eşleşen bir alt öğe içeriyorsa bir öğeyi seçer. Genellikle "üst seçici" olarak adlandırılır ve CSS'nin daha önce sahip olmadığı, alt öğelerine göre bir üst öğeyi biçimlendirme olanağını sağlar.

Temel Söz Dizimi

.card:has(img), img alt öğesi içeren herhangi bir .card öğesini seçer. Bağımsız değişken, konu öğesine göre öğeleri açıklayan geçerli CSS seçicilerinden oluşan göreli bir seçici listesidir.

Üst Öğeleri Biçimlendirme

Geçersiz bir girdi içerdiğinde form kapsayıcısını biçimlendirin: form:has(:invalid) { border-color: red; }. Bir başlık içeren bölümü biçimlendirin: section:has(h2) { padding-top: 2rem; }. Üst öğe, alt öğenin durumuna göre görünümünü değiştirir.

Kardeş Öğeleri Seçme

:has(), + ve ~ birleştiricilerinin yapamadığı bir şeyi, önceki kardeşleri seçmeyi mümkün kılar. h2:has(+ p), hemen ardından p gelen h2 öğelerini seçer. li:has(~ .active), kendisinden sonra gelen bir .active kardeş öğeye sahip li öğelerini seçer.

Form Durumunu Biçimlendirme

JavaScript olmadan yerel form geçerliliğine tepki verin: input:has(~ .error-msg), kardeş hata iletisine sahip bir girdiyi biçimlendirir. label:has(+ input:required), eşleştirilmiş girdisi zorunlu olan etiketleri biçimlendirir; bunların tümü yalnızca CSS ile yapılır.

Gezinme Durumu

Etkin alt öğeye göre gezinme kapsayıcılarını vurgulayın: nav:has(.active), herhangi bir alt öğe etkin sınıfa sahip olduğunda tüm nav öğesine stiller uygular. Bu, hangi gezinme bölümünün geçerli olduğunu kapsayıcı düzeyinde belirtmek için kullanışlıdır.

Diğer Sözde Sınıflarla Birleştirme

.grid:has(.card:focus-within), herhangi bir kart klavye odağı aldığında tüm ızgarayı biçimlendirir. .dropdown:has(:hover), herhangi bir alt öğenin üzerine gelindiği sürece açılır menüyü açık tutar; bu, karmaşık kardeş birleştiricisi zincirlerinden daha temizdir.

CSS'de Medya Sorgusu Karşılığı

.sidebar:has(nav), .sidebar:not(:has(nav)) ifadesinden farklı bir düzen uygular. JavaScript olmadan koşullu düzen: belirli alt öğelerin varlığı veya yokluğu, üst öğenin düzenini yönlendirir ve gerçekten uyarlanabilir, içerik farkındalığına sahip CSS sağlar.

Performansla İlgili Noktalar

Geniş kapsamlı bağımsız değişken seçicileri içeren :has() ifadeleri (örneğin :has(*)) maliyetli olabilir; tarayıcının her öğeyi denetlemesi gerekir. :has() bağımsız değişkenlerini belirli tutun. Mümkün olduğunda :has(> .specific-child) (doğrudan alt öğe) ifadesini, :has(.specific-child) (herhangi bir alt öğe) ifadesine tercih edin.

Tarayıcı Desteği

:has(), Chrome 105+, Safari 15.4+ ve Firefox 121+ sürümlerinde desteklenir. Tam temel desteğe 2023'ün sonlarından beri sahiptir. Bir çoklu dolgusu yoktur (bunu benzetmek için JavaScript gerekir); özelliğin kritik olmadığı eski tarayıcılarda aşamalı geliştirmeyle birlikte kullanın.

JavaScript Kalıplarını Değiştirme

Daha önce JS olay dinleyicileri gerektiren kalıplar: "alt öğe odaklandığında üst öğeye sınıf ekleme", "modal-trigger mevcut olduğunda kaplama gösterme", "tam olarak üç öğeye sahip olduğunda ızgarayı farklı biçimlendirme." :has(), bunların tümünü bildirimsel olarak ele alır.

Bilgi Kontrolü

:has(), + ve ~ gibi mevcut CSS birleştiricileriyle karşılaştırıldığında onu benzersiz kılan nedir?

Özet

:has(), üst öğe ve önceki kardeş seçimini mümkün kılan CSS'deki ilk gerçek ilişkisel sözde sınıftır. İçerik odaklı biçimlendirmeyi, form durumu tepkilerini, gezinme vurgulamasını ve daha önce JavaScript DOM işlemleri gerektiren birçok kalıbı destekler; üstelik tümü CSS içinde bildirimsel olarak yapılır.

Sıkça Sorulan Sorular

“:has() İlişkisel Sözde Sınıfı” dersi ücretsiz mi?

Evet — “:has() İlişkisel Sözde Sınıfı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve CSS Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. CSS Academy kursu toplamda 4 dersten oluşur.

“:has() İlişkisel Sözde Sınıfı” dersinde ne öğreneceğim?

Güçlü :has() ilişkisel sözde sınıfını kullanarak alt öğelerine göre üst öğeleri seçin. CSS Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

CSS Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te CSS Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“:has() İlişkisel Sözde Sınıfı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu CSS Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her CSS Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yerel CSS İç İçe Yerleştirme
  2. :has() İlişkisel Sözde Sınıfı
  3. Kapsamlandırılmış Stiller için @scope
  4. View Transitions API'si
← CSS Academy Sayfasına Dön