Menu

CSS !important: Nasıl Çalışır, Ne Zaman Kullanılır

!important, bir bildirimin özgüllükleri ne olursa olsun normal bildirimlere karşı kazanmasını sağlar. Neyi yendiğini, onu neyin yendiğini, altta özgüllüğün nasıl işlediğini ve bir stil çakışmasını kazanmanın daha temiz yollarını öğren.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

!important ne yapar

Bir değerin ardına !important eklemek, o bildirimin aynı elementteki aynı özellik için her normal bildirime karşı kazanmasını sağlar. Seçici özgüllüğü ve kaynak sırası artık önemli değildir.

!important olmasaydı ID seçici kazanır ve metin mavi olurdu. Görmek için editörde !important ifadesini sil.

Söz dizimi

selector {
  property: value !important;
}

Değerden sonra, noktalı virgülden önce gelir. Kuralın tamamına değil, yalnızca o tek bildirime uygulanır. Kısa yazımlarda da (margin: 0 !important; dört kenarın hepsini important yapar) ve bir style özniteliğinde de çalışır.

Hangisi hangisini yener

Sayfanın yazarının yazdığı stiller için, en zayıftan en güçlüye:

SıraBildirimÖrnek
1Stil dosyasındaki normal bildirimp { color: blue; }
2Bir style özniteliğindeki normal bildirim<p style="color: blue">
3Stil dosyasında !importantp { color: blue !important; }
4Bir style özniteliğinde !important<p style="color: blue !important">

Aynı sıranın içinde özgüllük karar verir, sonra bildirimlerin görünme sırası: sonraki kazanır.

!important'ın meşru tek gündelik kullanımı budur: düzenleyemediğin inline bir stili, örneğin üçüncü taraf bir widget'ın yazdığı bir stili ezmek.

İki bildirim de !important olduğunda

!important ile !important karşılaştığında olağan kurallara dönülür: yüksek özgüllük kazanır, eşitlikte sonraki bildirim kazanır.

!important böyle tırmanır: bir kural onu kullandığında, onu ezmesi gereken kural da kullanmak zorunda kalır ve özgüllük yeniden artmaya başlar.

Tek tabloda CSS özgüllüğü

Özgüllük bir seçicinin ağırlığıdır. Üç sayı say:

SütunNe sayılırÖrnek seçiciÖzgüllük
AID seçiciler#nav(1,0,0)
BClass'lar, öznitelikler, sözde sınıflar.btn, [type="text"], :hoverher biri (0,1,0)
CTür seçicileri, sözde elementlerp, ::beforeher biri (0,0,1)
yok*, birleştiriciler (>, +, ~, boşluk)*, ul > lihiçbir şey eklemez

Önce A sütununu karşılaştır; yalnızca eşitlikte B'ye, sonra C'ye bak. Böylece #nav a (1,0,1), .menu .item .link a (0,3,1) seçicisini yener: tek bir ID, kaç tane olursa olsun class'lardan ağır basar.

Bu tabloyu anlamak !important'tan kaçınmanı sağlar: "CSS'im uygulanmıyor" sorunlarının çoğu başka bir yerdeki daha özgül bir kuraldır; DevTools Styles panelinde senin bildiriminin üstü çizili olarak görünür.

Daha temiz alternatifler

  • Özgüllüğü eşitle, sonra sıraya güven. Stil dosyanı kütüphaneninkinden sonra yükle ve en az onun kadar özgül bir seçici kullan.
  • Diğer kuralın özgüllüğünü :where() ile düşür. :where() içindeki her şey sıfır sayılır, bu yüzden onunla yazılan temel stiller kolayca ezilir.
  • Kanca olarak bir CSS değişkeni kullan. var(--btn-bg) okuyan bir bileşen, seçicileriyle kavga etmeden temalanabilir. Bkz. CSS değişkenleri.

JavaScript ile !important ayarlamak

element.style.color = 'red !important' çalışmaz: değer geçersizdir ve yok sayılır. Üçüncü bir argümanla setProperty kullan:

el.style.setProperty('color', '#f59e0b', 'important');

Sık yapılan hatalar

  • Yanlış yere koymak. color: !important red; geçersizdir; değerden sonra gelir.
  • @keyframes içinde kullanmak. Keyframe'lerin içinde !important ile işaretlenmiş bildirimler yok sayılır.
  • Her çakışmayı onunla çözmek. Bunun yerine kazanan kuralı DevTools'ta bul ve onun özgüllüğünü eşitle ya da düşür.
  • Başka bir özelliği etkilemesini beklemek. color: red !important, background için hiçbir şey yapmaz.
  • Inline !important'ın seninkini yendiğini unutmak. Sayfanın stil dosyalarındaki hiçbir kural style="color: red !important" değerini ezemez; özniteliğin kendisini, örneğin JavaScript ile değiştir.

Sıkça Sorulan Sorular

CSS'te !important ne işe yarar?

Bir bildirime, aynı elementteki aynı özellik için seçici özgüllüğünden ve sıradan bağımsız olarak her normal bildirimin önünde öncelik verir. Değerden sonra yaz: color: red !important;.

!important nasıl ezilir?

Daha yüksek özgüllüğe sahip ya da aynı özgüllükte olup stil dosyasında daha sonra gelen başka bir !important bildirimiyle. !important içeren inline bir style, stil dosyasındaki her !important'ı yener.

!important inline stilleri ezer mi?

Evet. !important içeren bir stil dosyası bildirimi, bir style özniteliğindeki normal bir bildirimi yener. Kendisi de !important ile işaretlenmiş inline bir bildirimi ise yenemez.

!important kullanmak kötü bir uygulama mı?

Bir özgüllük kavgasını kazanmak için kullanılıyorsa evet: bir sonraki ezme de !important ister ve stil dosyası zor değişir hale gelir. Her zaman uygulanması gereken yardımcı class'lar (.hidden gibi), üçüncü taraf inline stilleri ezmek ve kullanıcı stil dosyaları için makuldür.

CSS özgüllüğü nasıl hesaplanır?

Üç sütun say: ID seçiciler, sonra class'lar, öznitelikler ve sözde sınıflar, sonra tür seçicileri ve sözde elementler. Baştan başlayarak sütun sütun karşılaştır; böylece #nav a (1,0,1), .menu .item a (0,2,1) seçicisini yener. Evrensel seçici * ve birleştiriciler hiçbir şey eklemez.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA