yigityalim
projelerel kitabılabişe alpaylaş
xgithub
siteprojelerel kitabılaboratuvardeğişiklik günlüğü
hakkındakullanımlarşimdiişe alpaylaş
diğerxgithublinkedine-posta
metarssllms.txtsitemap
© 2026 Yiğit Yalım. Tüm hakları saklıdır.
/
Laboratuvarlara Dön
10 May 2026·web

CSS Specificity Hesaplayıcı

İki selector yapıştır, (a, b, c) tuple'ını gör, hangisinin kazanacağını anla. Token-token renkli breakdown. `:where()`, `:not()`, `:is()` ve `:has()` doğru hesaplanır.

css · specificity · selectors

ÖncekiColor Contrast (WCAG)SonrakiCubic-Bezier Tester

Çoğu dev specificity'yi yanlış sayar — ve !important ile çözmeye çalışır. Bu lab iki selector arasında karşılaştırma yapar, hangi kuralın kazandığını gösterir.

CssSpecificity — (id, class/attr/pseudo, element)
A022
nav.primary·>·a:hover
B101
#site-header·a
B kazanır — (1,0,1)Not: !important selector specificity'yi geçersiz kılar ve ayrı bir cascade katmanında değerlendirilir.
#id → (1,0,0).class / [attr] / :pseudo → (0,1,0)element / ::pseudo → (0,0,1):where() → (0,0,0)

(a, b, c) ne demek?

Üç sayım, soldan sağa karşılaştırılır:

  • a — ID selector sayısı (#header)
  • b — class, attribute, pseudo-class sayısı (.btn, [type=text], :hover)
  • c — element + pseudo-element sayısı (div, ::before)

#header (1, 0, 0) > .btn.large.primary (0, 3, 0) > nav a:hover (0, 1, 2). İlk farklı bileşen kazanır — yüksek a her şeyi yener, eşitse b'ye bakılır.

Spec sürprizleri

  • :where() specificity'ye 0 katar. Modern CSS'in en iyi özelliği — :where(.theme-dark) .btn yazsan, ana .btn ile aynı specificity'de kalır, override etmez.
  • :not(), :is(), :has() içlerindeki en yüksek specificity argümanını alır. :is(#x, .y) = (1, 0, 0), çünkü #x daha güçlü.
  • Inline style="..." specificity'den de yüksek (sadece !important yener).
  • !important specificity'yi atlar — aynı önemde kurallar için specificity bakılır.

Pratik tavsiye

  • Specificity savaşına girme — selector'ları mümkün olduğunca düşük tut
  • :where() ile reset / theming yap, kullanıcı kuralları override etmesin
  • !important sadece üçüncü-parti override için (örn. analytics widget'ı, Tailwind class)
  • Class isimlerinde BEM (.block__elem--mod) tek-class kuralı sağlar, savaş baştan biter