Temel CSS ilkelerini öğrenirken, sürdürülebilirliği sağlamak için modüler, yeniden kullanılabilir ve açıklayıcı stiller yazılması öğretilir. Ancak geliştiriciler gerçek dünyadaki uygulamalarla ilgilenmeye başladığında, stiller istenmeyen alanlara sızmadan kullanıcı arayüzü özellikleri eklemek çoğu zaman imkansız gibi geliyor. Bu sorun genellikle kartopu gibi kendi kendini gerçekleştiren bir döngüye dönüşür; Teorik olarak tek bir öğeye veya sınıfa odaklanan stiller, ait olmadıkları yerde ortaya çıkmaya başlar. Bu, geliştiriciyi, sızdırılan stilleri geçersiz kılmak için daha spesifik seçiciler oluşturmaya zorlar; bu seçiciler daha sonra yanlışlıkla genel stilleri geçersiz kılar ve bu böyle devam eder. BEM gibi katı sınıf adı kuralları bu soruna yönelik teorik çözümlerden biridir. BEM (Blok, Öğe, Değiştirici) metodolojisi, CSS dosyalarında yeniden kullanılabilirliği ve yapıyı sağlamak için CSS sınıflarını adlandırmanın sistematik bir yoludur. Bunun gibi adlandırma kuralları, öğeleri ve durumlarını tanımlamak için etki alanı dilinden yararlanarak bilişsel yükü azaltabilir ve doğru şekilde uygulanırsa, büyük uygulamalara yönelik stillerin bakımını kolaylaştırabilir. Ancak gerçek dünyada işler her zaman böyle yürümez. Öncelikler değişebilir ve değişimle birlikte uygulama tutarsız hale gelir. HTML yapısında yapılan küçük değişiklikler, birçok CSS sınıfı adı revizyonunu gerektirebilir. Yüksek düzeyde etkileşimli ön uç uygulamalarda, BEM modelini izleyen sınıf adları uzun ve kullanışsız hale gelebilir (örneğin, uygulama-kullanıcı-genel bakış__durum--kimlik doğrulaması yapılıyor) ve adlandırma kurallarına tam olarak uymamak sistemin yapısını bozar ve dolayısıyla faydalarını boşa çıkarır. Bu zorluklar göz önüne alındığında, geliştiricilerin çerçevelere yönelmesi şaşırtıcı değil; Tailwind en popüler CSS çerçevesidir. Stiller arasında kazanılamaz bir özgüllük savaşı gibi görünen bir şeyle mücadele etmeye çalışmak yerine, CSS Cascade'den vazgeçmek ve tam izolasyonu garanti eden araçları kullanmak daha kolaydır. Geliştiriciler Yardımcı Programlara Daha Fazla Yön Veriyor Bazı geliştiricilerin basamaklı stillerden kaçınmaya istekli olduklarını nasıl bilebiliriz? Bu, özellikle bu amaç için tasarlanmış, JS'de CSS çerçeveleri gibi "modern" ön uç araçların yükselişidir. Belirli bileşenlere sıkı bir şekilde odaklanan izole stillerle çalışmak, temiz bir nefes gibi görünebilir. Halen en nefret edilen ve zaman alan ön uç görevlerinden biri olan şeyleri adlandırma ihtiyacını ortadan kaldırır ve geliştiricilerin, CSS mirasının faydalarını tam olarak anlamadan veya bunlardan faydalanmadan üretken olmalarına olanak tanır. Ancak CSS Cascade'den vazgeçmenin kendi sorunları var. Örneğin, JavaScript'te stil oluşturmak, ağır yapı yapılandırmaları gerektirir ve çoğu zaman stillerin bileşen işaretlemesi veya HTML ile garip bir şekilde birbirine karışmasına yol açar. Dikkatlice düşünülmüş adlandırma kuralları yerine, derleme araçlarının bizim için seçicileri ve tanımlayıcıları otomatik olarak oluşturmasına izin veriyoruz (ör. .jsx-3130221066), bu da geliştiricilerin kendi başına başka bir sözde dile ayak uydurmasını gerektiriyor. (Sanki bileşeninizin kullanım efektlerinin ne işe yaradığını anlamanın bilişsel yükü zaten yeterli değilmiş gibi!) Sınıfları adlandırma işinin araçlara daha da soyutlanması, Geliştirici Araçları gibi canlı hata ayıklamayı destekleyen yerel tarayıcı özelliklerinden yararlanmak yerine, temel hata ayıklamanın genellikle geliştirme için derlenen belirli uygulama sürümleriyle sınırlandırıldığı anlamına gelir. Sanki web'in halihazırda sağladığı şeyleri soyutlamak için kullandığımız araçlarda hata ayıklamak için araçlar geliştirmemiz gerekiyor; bunların hepsi standart CSS yazmanın "acısından" kaçmak adına. Neyse ki, modern CSS özellikleri yalnızca standart CSS yazmayı daha esnek hale getirmekle kalmıyor, aynı zamanda bizim gibi geliştiricilere bu aşamayı yönetme ve bizim için çalışmasını sağlama konusunda çok daha fazla güç veriyor. CSS Cascade Katmanları harika bir örnek, ancak şaşırtıcı derecede dikkat çekmeyen başka bir özellik daha var - ancak yakın zamanda Baseline uyumlu hale gelmesiyle bu durum değişiyor. CSS @scope Kuralında CSS @scope at-rule'ın, ele aldığımız stil sızıntısının neden olduğu endişeye karşı potansiyel bir tedavi olduğunu düşünüyorum; bu, bizi soyutlamalar ve ekstra derleme araçları için yerel web avantajlarından ödün vermeye zorlamaz. "@scope CSS at-rule, belirli DOM alt ağaçlarındaki öğeleri seçmenizi, geçersiz kılınması zor aşırı spesifik seçiciler yazmadan ve seçicilerinizi DOM yapısına çok sıkı bağlamadan öğeleri hassas bir şekilde hedeflemenizi sağlar."— MDN

Başka bir deyişle, kalıtımdan, basamaklandırmadan ve hatta endişelerin temel ayrımından ödün vermeden belirli durumlarda yalıtılmış stillerle çalışabiliriz.Bu, ön uç geliştirmenin uzun süredir devam eden yol gösterici ilkesi olmuştur. Ayrıca mükemmel tarayıcı kapsamına sahiptir. Aslında Firefox 146, Aralık ayında @scope desteğini ekleyerek onu ilk kez Baseline uyumlu hale getirdi. BEM modelini kullanan bir düğme ile @scope kuralını kullanan bir düğme arasında basit bir karşılaştırma:

.button .button__text { /* düğme metni stilleri */ } .button .button__icon { /* düğme simgesi stilleri */ } .button--birincil { birincil düğme stilleri */ }

@scope (.birincil düğme) { span:ilk çocuk { /* düğme metni stilleri */ } span:son-çocuk { /* düğme simgesi stilleri */ } }

@scope kuralı daha az karmaşıklıkla hassasiyete izin verir. Geliştiricinin artık sınıf adlarını kullanarak sınırlar oluşturmasına gerek yok; bu da yerel HTML öğelerine dayalı seçiciler yazmalarına olanak tanıyor ve böylece kuralcı CSS sınıf adı kalıplarına olan ihtiyacı ortadan kaldırıyor. @scope, sınıf adı yönetimi ihtiyacını ortadan kaldırarak büyük projelerde CSS ile ilgili korkuyu hafifletebilir. Temel Kullanım Başlamak için CSS'nize @scope kuralını ekleyin ve hangi stillerin kapsamının belirleneceğini bir kök seçici ekleyin: @scope () { /* kapsamına alınan stiller */ }

Yani, örneğin, stillerin kapsamını bir

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free