CSS seçici nedir
Seçici, bir kuralın süslü parantezlerden önceki kısmıdır. Bildirimlerin hangi elementlere uygulanacağına o karar verir.
p.note { color: #2563eb; }
/* selector: p.note declaration: color: #2563eb */
Beş temel seçici gerçek stil dosyalarının çoğunu karşılar:
Bir bakışta seçici türleri
| Seçici | Örnek | Eşleştiği |
|---|---|---|
| Evrensel | * | Her element |
| Tür | p | Her <p> |
| Class | .tip | class="tip" taşıyan elementler (başka class'larla birlikte de) |
| ID | #main-title | id="main-title" olan element |
| Öznitelik | [type="email"] | Özniteliği eşleşen elementler |
| Sözde sınıf | a:hover, li:first-child | Bir durumdaki ya da konumdaki elementler |
| Sözde element | p::first-line, .x::before | Bir elementin bir parçası |
| Grup | h1, h2, h3 | Listedekilerden biriyle eşleşen her şey |
| Bileşik | p.tip | Aynı zamanda o class'a sahip bir <p> |
Class ve ID'lerin kendi sayfası var: CSS class seçici. :nth-child() ve :not() gibi sözde sınıflar sözde sınıflar sayfasında anlatılıyor.
Birleştiriciler: alt öğe ve çocuk
Bir birleştirici, iki seçiciyi HTML ağacındaki ilişkilerine göre bağlar. Dört tane vardır.
| Birleştirici | Söz dizimi | B ne zaman eşleşir |
|---|---|---|
| Alt öğe | A B (boşluk) | B, A'nın içinde herhangi bir yerde |
| Çocuk | A > B | B'nin ebeveyni A |
| Bitişik kardeş | A + B | B, A'dan hemen sonra, aynı ebeveyn |
| Genel kardeş | A ~ B | B, A'dan sonra bir yerde, aynı ebeveyn |
İnsanların karıştırdığı ikili boşluk ve > işaretidir. Alt öğe seçici her derinliğe ulaşır; çocuk seçici bir seviyede durur:
Kardeş birleştiricileri: + ve ~
Kardeşler yalnızca ileriye bakar. "Önceki kardeş" birleştiricisi yoktur, ama :has() bunu ifade edebilir: h2:has(+ p), hemen ardından bir p gelen bir h2 ile eşleşir.
Öznitelik seçiciler
Köşeli parantezler özniteliklere ve değerlerine göre eşleşir:
| Seçici | Eşleştiği |
|---|---|
[disabled] | Özniteliğe sahip, değeri ne olursa olsun |
[type="email"] | Değer tam olarak email |
[href^="https"] | Değer https ile başlar |
[href$=".pdf"] | Değer .pdf ile biter |
[class*="icon"] | Değer herhangi bir yerinde icon içerir |
[lang|="en"] | Değer en ya da en- ile başlıyor |
[data-state="open" i] | Büyük küçük harf gözetmeden tam eşleşme |
data-* özniteliklerindeki öznitelik seçiciler, class adı uydurmadan JavaScript'in ayarladığı durumlara stil vermenin temiz bir yoludur.
Herhangi bir seçiciyi dene
Kutuya bir seçici yaz. Eşleştiği her element kehribar rengi bir çerçeve alır ve sayısı aşağıda görünür.
#demo a, ul > li, h2 ~ *, a[href^="https"], li:not(.active) dene.
Bileşik ve alt öğe: boşluk önemlidir
p.note ile p .note arasında bir boşluk fark vardır ve farklı anlamlara gelirler.
Tarayıcılar seçicileri nasıl okur
Birden fazla kural aynı elementle eşleşip aynı özelliği ayarladığında daha özgül seçici kazanır, eşitlikte sonraki kazanır. Bir ID kaç tane olursa olsun class'lardan, bir class da kaç tane olursa olsun tür seçicilerinden ağır basar; özgüllük tablosunun tamamı !important sayfasında.
Grupların bir püf noktası vardır: düz bir listedeki seçicilerden biri geçersizse kuralın tamamı atılır. a, b:unknown { } içinde linklere bile stil verilmez. Listeyi :is() ile sarmak onu hoşgörülü yapar, böylece :is(a, b:unknown) linklere yine stil verir.
Sık yapılan hatalar
- Noktayı ya da diyez işaretini unutmak.
tip { },class="tip"değil, bir<tip>elementini hedefler..tipyaz. - Bileşik seçicide boşluk.
p .note,p.notedeğildir. >işaretinin torunlara ulaşmasını beklemek. Her derinlik için boşluk kullan.- Tek bir yazım hatası bütün grubu bozar.
h1, h2:hovr, h3içinde hiçbir şeye stil verilmez. - Aşırı uzun seçiciler.
body div.wrapper ul li aokunması zor ve ezilmesi zordur. Genellikle tek bir class yeterlidir.
Sıkça Sorulan Sorular
CSS seçici nedir?
Bir CSS kuralının { işaretinden önceki, bildirimlerin hangi elementlere uygulanacağını söyleyen kısmıdır. p.note { color: blue; } kuralında p.note seçicisi, note class'ına sahip her <p> ile eşleşir.
CSS seçicide boşluk ile > arasındaki fark nedir?
Boşluk, alt öğe birleştiricisidir: nav a, bir nav içinde hangi derinlikte olursa olsun her linkle eşleşir. > ise çocuk birleştiricisidir: nav > a yalnızca doğrudan ebeveyni nav olan linklerle eşleşir.
CSS'te + ne anlama gelir?
+, bitişik kardeş birleştiricisidir. h2 + p, aynı ebeveyne sahip bir <h2>'den hemen sonra gelen <p> ile eşleşir. ~ daha gevşektir: h2 ~ p, sonraki her <p> kardeşle eşleşir.
CSS'te elementler özniteliğe göre nasıl seçilir?
Özniteliği köşeli parantez içine yaz: [disabled] o özniteliğe sahip elementlerle, [type="email"] tam bir değerle, [href^="https"] bir metinle başlayan bir değerle, [href$=".pdf"] onunla biten bir değerle ve [class*="btn"] onu içeren bir değerle eşleşir.
CSS ile ebeveyn element seçilebilir mi?
Evet, güncel Chrome, Firefox ve Safari'de desteklenen :has() sözde sınıfıyla. li:has(> a.active), doğrudan aktif bir link içeren liste öğeleriyle eşleşir.