Əsas CSS prinsiplərini öyrənərkən, davamlılığı təmin etmək üçün modul, təkrar istifadə edilə bilən və təsviri üslubları yazmaq öyrədilir. Lakin tərtibatçılar real dünya tətbiqləri ilə məşğul olduqda, üslublar arzuolunmaz sahələrə sızmadan UI xüsusiyyətlərini əlavə etmək çox vaxt qeyri-mümkün görünür. Bu məsələ tez-tez özünü yerinə yetirən bir döngəyə qartopu edir; nəzəri olaraq bir elementə və ya sinifə aid olan üslublar aid olmadığı yerlərdə görünməyə başlayır. Bu, tərtibatçını sızdırılmış üslubları ləğv etmək üçün daha da spesifik seçicilər yaratmağa məcbur edir, sonra təsadüfən qlobal üslubları ləğv edir və s. BEM kimi sərt sinif adları konvensiyaları bu məsələnin nəzəri həllidir. BEM (Blok, Element, Modifikator) metodologiyası CSS faylları daxilində təkrar istifadə oluna bilməsini və strukturunu təmin etmək üçün CSS siniflərinin adlandırılmasının sistematik üsuludur. Bu kimi konvensiyaların adlandırılması elementləri və onların vəziyyətini təsvir etmək üçün domen dilindən istifadə etməklə koqnitiv yükü azalda bilər və düzgün tətbiq olunarsa, böyük tətbiqlər üçün üslubların saxlanmasını asanlaşdıra bilər. Gerçək dünyada isə bu, həmişə belə işləmir. Prioritetlər dəyişə bilər və dəyişikliklə birlikdə icra uyğunsuzluğa çevrilir. HTML strukturunda kiçik dəyişikliklər bir çox CSS sinif adının düzəlişlərini tələb edə bilər. Yüksək interaktiv qabaqcıl tətbiqlərlə, BEM nümunəsinə uyğun olan sinif adları uzun və çətin ola bilər (məsələn, proqram-istifadəçinin ümumi baxışı__status-autentifikasiya olunur) və adlandırma qaydalarına tam əməl edilməməsi sistemin strukturunu pozur və bununla da onun faydalarını inkar edir. Bu çətinlikləri nəzərə alaraq, tərtibatçıların çərçivələrə müraciət etmələri təəccüblü deyil, Tailwind ən populyar CSS çərçivəsidir. Üslublar arasında qalib gəlməz bir spesifiklik müharibəsi kimi görünən bir şeylə mübarizə aparmaq əvəzinə, CSS Cascade-dən imtina etmək və tam izolyasiyaya zəmanət verən vasitələrdən istifadə etmək daha asandır. Tərtibatçılar kommunal xidmətlərə daha çox güvənirlər Bəzi tərtibatçıların kaskad üslublardan qaçmaqda maraqlı olduğunu necə bilirik? Bu, xüsusi olaraq bu məqsəd üçün nəzərdə tutulmuş CSS-in-JS çərçivələri kimi “müasir” qabaqcıl alətlərin yüksəlişidir. Müəyyən komponentlərlə sıx şəkildə əhatə olunmuş təcrid olunmuş üslublarla işləmək təmiz hava nəfəsi kimi görünə bilər. Bu, hələ də ən çox nifrət edilən və vaxt aparan qabaqcıl vəzifələrdən biri olan əşyaların adlarını çəkmək ehtiyacını aradan qaldırır və tərtibatçılara CSS irsinin üstünlüklərini tam dərk etmədən və ya istifadə etmədən məhsuldar olmağa imkan verir. Lakin CSS Cascade-dən imtina öz problemləri ilə gəlir. Məsələn, JavaScript-də üslubların tərtib edilməsi ağır quruluş konfiqurasiyaları tələb edir və çox vaxt üslubların komponent işarələməsi və ya HTML ilə yöndəmsiz şəkildə qarışmasına səbəb olur. Diqqətlə düşünülmüş adlandırma konvensiyaları əvəzinə, biz qurma alətlərinə bizim üçün seçiciləri və identifikatorları avtomatik yaratmağa icazə veririk (məsələn, .jsx-3130221066), tərtibatçılardan özlüyündə başqa psevdodillə ayaqlaşmalarını tələb edirik. (Sanki komponentinizin bütün istifadə Effektlərinin nə etdiyini başa düşmək üçün idrak yükü artıq kifayət deyildi!) Alətlərə siniflərin adlandırılması işini daha da abstraksiya etmək o deməkdir ki, əsas sazlama tez-tez Developer Tools kimi canlı sazlamağı dəstəkləyən yerli brauzer xüsusiyyətlərindən istifadə etmək əvəzinə, inkişaf üçün tərtib edilmiş xüsusi proqram versiyaları ilə məhdudlaşır. Demək olar ki, biz internetin artıq təmin etdiklərini mücərrədləşdirmək üçün istifadə etdiyimiz alətləri sazlamaq üçün alətlər hazırlamalıyıq – hamısı standart CSS yazmaq “acısından” qaçmaq naminə. Xoşbəxtlikdən, müasir CSS xüsusiyyətləri nəinki standart CSS yazısını daha çevik edir, həm də bizim kimi tərtibatçılara kaskadı idarə etmək və onu bizim üçün işləmək üçün daha çox güc verir. CSS Cascade Layers əla nümunədir, lakin təəccüblü diqqəti cəlb edən başqa bir xüsusiyyət də var – baxmayaraq ki, bu yaxınlarda Baseline uyğunlaşdığına görə dəyişir. CSS @scope At-Rule Mən CSS @scope at-rule-ni əhatə etdiyimiz üslub sızması ilə bağlı narahatlıq üçün potensial müalicə hesab edirəm, bu, bizi abstraksiyalar və əlavə quraşdırma alətləri üçün yerli veb üstünlüklərini pozmağa məcbur etmir. “@scope CSS qaydası sizə xüsusi DOM alt ağaclarında elementləri seçməyə imkan verir, elementləri dəqiqliklə hədəfə alır və onları ləğv etmək çətin olan həddən artıq xüsusi seçicilər yazmadan və seçicilərinizi DOM strukturuna çox möhkəm bağlamadan.”— MDN.

Başqa sözlə, biz mirasdan, kaskaddan və hətta narahatlıqların əsas ayrılmasından imtina etmədən xüsusi hallarda təcrid olunmuş üslublarla işləyə bilərik.bu, qabaqcıl inkişafın uzun müddət davam edən rəhbər prinsipi olmuşdur. Üstəlik, əla brauzer əhatə dairəsinə malikdir. Əslində, Firefox 146 dekabr ayında @scope üçün dəstək əlavə etdi və ilk dəfə onu Baseline uyğunlaşdırdı. Budur, BEM nümunəsindən istifadə edən düymə ilə @scope qaydası arasında sadə müqayisə:

.button .button__text { /* düymə mətn üslubları */ } .button .button__icon { /* düymə nişanı üslubları */ } .button--əsas { əsas düymə üslubları */ }

@scope (.primary-button) { span:first-child { /* düymə mətn üslubları */ } span:last-child { /* düymə nişanı üslubları */ } }

@scope qaydası daha az mürəkkəbliklə dəqiqliyə imkan verir. Tərtibatçıya artıq sinif adlarından istifadə edərək sərhədlər yaratmağa ehtiyac yoxdur, bu da öz növbəsində onlara yerli HTML elementləri əsasında seçicilər yazmağa imkan verir və bununla da göstərişli CSS sinif ad nümunələrinə ehtiyacı aradan qaldırır. Sadəcə olaraq sinif adlarının idarə edilməsi ehtiyacını aradan qaldırmaqla @scope böyük layihələrdə CSS ilə bağlı qorxunu azalda bilər. Əsas İstifadə Başlamaq üçün, @scope qaydasını CSS-ə əlavə edin və üslubların əhatə olunacağı kök seçicisini daxil edin: @scope () { /* Üslublar üçün əhatə olunub */ }

Beləliklə, məsələn, üslubları 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