22 puan yazan ragus 2024-10-04 | 7 yorum | WhatsApp'ta paylaş

Sorun

  • CSS ile stillendirme yaparken zaman zaman CSS çakışmaları yaşanır ve istenmeyen stiller uygulanabilir.
  • Bu tür çakışmalar genellikle UI kütüphaneleri, üçüncü taraf widget'lar ya da başka ekipler tarafından yönetilen CSS kodlarından kaynaklanır; böyle durumlarda CSS'i istediğiniz gibi değiştirmek çoğu zaman mümkün olmaz.
  • Özellikle UI kütüphanelerinden veya üçüncü taraflardan gelen CSS ile çakışma olduğunda, HTML'ye ek class ya da ID eklemek de zor olabilir.
  • Üstelik çakışmaya neden olan CSS kodu çok spesifik yazılmışsa, kendi CSS'inizin önceliğini artırmak için onu daha da spesifik hale getirmek de imkansız olabilir.
  • Bu durumda birçok geliştirici kolayca !important kullanır, ancak bu önerilen bir yöntem değildir.

Çözüm

  • Seçiciyi tekrarlayarak kullanabilirsiniz.
  • Örneğin .checkbox__icon.checkbox__icon, tek bir .checkbox__icon seçicisinden daha yüksek önceliğe sahiptir.
  • Bu yöntem bir CSS hilesi gibi görünebilir, ancak CSS Selectors Level 4 specification içinde "Repeated occurrences of the same simple selector are allowed and do increase specificity." ifadesi açıkça yer alır.

7 yorum

 
kroisse 2024-10-07

Artık CSS Cascade Layers(@layer) tüm büyük tarayıcılarda desteklendiğine göre, bu tür hack'lere dayanmak gerekmeyecek gibi görünüyor.

https://developer.mozilla.org/en-US/docs/Web/CSS/@layer
https://caniuse.com/css-cascade-layers

 
gwpark 2024-10-06

Aa, demek ki styled-components içinde && kullanarak stillerin üzerine yazmanın yolu buymuş?

 
dogtree 2024-10-05

Öğrenci, yazıyı kaldırın

 
kyc1682 2024-10-05

Biraz kara büyü gibi hissettiriyor lol

 
xenoside 2024-10-04

Artık şöyle bir kod görmeye başlayacağız galiba.
.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon.checkbox__icon

 
nemorize 2024-10-04

Vay, bunu bilmiyormuşum...
Duruma göre seçiciyi birkaç kez tekrar eden bir ön işleyici oluşturup kullanmak da düşünülebilir.

 
spilist2 2024-10-04

Aa, bilmiyordum bu yöntemi.