Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

CSS !important nedir?​


CSS !important, bir özellik tanımını normal CSS bildirimlerinden daha öncelikli hâle getiren işarettir. Örneğin color: red !important; yazıldığında bu tanım, aynı kaynak ve katman içindeki normal color tanımlarının önüne geçer. Ancak bu, her durumda tüm CSS kurallarını yeneceği anlamına gelmez; kuralın kaynağı, katmanı, önem düzeyi, seçici özgüllüğü ve yazım sırası birlikte değerlendirilir.

Nasıl çalışır?​


CSS aynı elemana uygulanan birden fazla tanım arasında seçim yaparken kademeli yapı, yani cascade, kurallarını kullanır. Normal bir tanımda seçici özgüllüğü, katman ve kaynak sırası önemlidir. !important kullanıldığında tanımın önem düzeyi yükselir ve aynı kaynak ile katmandaki normal tanımların önüne geçer.

Örnekte düğmenin checkout kimlikli bir kapsayıcı içinde ve button sınıfında olduğunu varsayalım. Bu öğeye uygulanan kurallar şöyledir:

CSS:
.button {
  border-radius: 5px;
  background-color: blue;
}

#checkout .button {
  background-color: green !important;
}

.button {
  background-color: red;
}

Bu örnekte butonun arka planı yeşil olur. İlk ve son kuralların yazım sırası veya seçici gücü önemli değildir; ikinci tanım !important içerdiği için aynı kapsamda bulunan normal tanımlara üstün gelir.

İki tanım da önemliyse önce kaynak türü ve cascade katmanı gibi üst öncelikler karşılaştırılır. Aynı kaynak ve katmanda seçici özgüllüğü önem kazanır; diğer eşitlik koşulları da sağlanıyorsa kaynak sırası belirleyici olur. Önemli bildirimlerde katman sırası tersine döner: önce tanımlanan katman daha öncelikli olabilir. Kullanıcıya ait önemli stiller, yazarın önemli stillerinden üstündür; etkin geçiş değerleri de önemli bildirimin üzerinde yer alabilir.

Ne zaman kullanılabilir?​


!important günlük stil yazımında ilk çözüm olmamalıdır. Genellikle başka bir kuralın neden kazandığı anlaşılmadan eklenir ve ileride aynı sorunu çözmek için daha fazla !important kullanılmasına yol açar.

Aşağıdaki karşılaştırma, hangi durumda nasıl karar verileceğini gösterir:
DurumÖnce denenmesi gereken çözüm!important kullanımı
Kendi kuralınız beklenmedik şekilde eziliyorSeçiciyi, kaynak sırasını ve stil dosyasını kontrol edinGenellikle gerekmez
Bir bileşenin geçici olarak zorunlu görünmesi gerekiyorÖnce bileşenin durum sınıflarını düzenleyinSınırlı ve açıklamalı kullanılabilir
Düzenlenemeyen üçüncü taraf CSS müdahale ediyorKatman veya daha uygun bir seçici kullanınSon çare olarak düşünülebilir
Bir tanımın gerçekten gerekli olduğuna karar verdiyseniz, kullanım amacını kod içinde açıklayın:

CSS:
.modal.is-open {
  border-radius: 5px;
  display: block !important; /* Harici bileşen kuralı modalı gizliyor. */
}

Bu açıklama, daha sonra kodu inceleyen kişinin işareti rastgele kaldırmamasını ve sorunun kaynağını anlayabilmesini sağlar.

Uygulanabilir kontrol adımları​

  1. Tarayıcının geliştirici araçlarında ilgili elementi seçin ve uygulanmayan CSS tanımının üzerinin neden çizildiğini kontrol edin.
  2. Aynı özelliği değiştiren kuralların hangi dosyadan geldiğini, hangi seçiciye sahip olduğunu ve bir medya sorgusu içinde olup olmadığını karşılaştırın.
  3. Sorun yalnızca seçici özgüllüğü veya yazım sırasıysa, önce daha anlaşılır bir seçici kullanın ya da kuralı uygun konuma taşıyın.
  4. Sorun harici bir stil dosyasından kaynaklanıyorsa, mümkünse bu dosyayı bir cascade katmanına alarak kendi stillerinizi daha kontrollü biçimde yönetin.
  5. Yine de !important gerekiyorsa yalnızca gerekli özelliğe ekleyin, kapsamı genişletmeyin ve nedenini yorum satırıyla belirtin.
  6. Değişiklikten sonra normal, hover, focus, disabled ve responsive durumlarını ayrı ayrı kontrol edin; tek bir durumda çalışan çözüm diğer durumları bozabilir.

Sık yapılan hatalar​


Her CSS sorununda !important kullanmak: Bu yaklaşım asıl çakışmanın kaynağını gizler. Önce geliştirici araçlarında kazanan kuralı bulun.

Birden fazla !important zinciri oluşturmak: Bir kuralı geçersiz kılmak için tekrar !important eklemek, stil dosyasını zor okunur hâle getirir. Aynı bileşen için tek bir kontrol noktası oluşturmak daha sağlıklıdır.

Söz dizimini yanlış yazmak: İşaret değer ifadesinin sonunda bulunmalıdır. Doğru kullanım margin: 0 !important; biçimindedir. margin !important: 0; geçerli değildir.

Animasyonlarda kullanmak: !important @keyframes tanımları içinde kullanılmaz. Animasyonun uyguladığı değeri değiştirmek gerekiyorsa animasyonun kendisini, sınıf durumunu veya geçiş mantığını düzenleyin.

Kapsamı gereksiz büyütmek: Yalnızca tek bir özelliği düzeltmek için bütün kural bloğundaki değerleri önemli hâle getirmeyin. Bu, ileride yapılacak değişikliklerin önüne geçebilir.

Sık sorulan sorular​


!important ile specificity aynı şey midir?​


Hayır. !important önem düzeyini değiştirir; specificity ise seçicinin ne kadar özgül olduğunu belirtir. Aynı önem düzeyindeki kurallar karşılaştırılırken specificity devreye girer.

Inline style kuralını !important ile geçebilir miyim?​


Normal bir inline style çoğu normal stil kuralından üstündür; uygun kapsamda yazılmış bir !important tanım bunu geçebilir. Fakat bu yöntem, HTML içindeki stil kullanımını temizlemek yerine sorunu CSS içinde büyütebilir; mümkünse inline style kaynağını düzeltin.

Kısaltma özelliğinde !important tüm alt özellikleri etkiler mi?​


Evet. Örneğin background: blue !important ilgili tüm background alt özelliklerini önemli yapar. Yalnız rengi değiştirmek istiyorsanız daha dar background-color özelliğini seçmek, istemeden görsel veya konum ayarını da ezmenizi önleyebilir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic