Негизги CSS принциптерин үйрөнүп жатканда, туруктуулукту камсыз кылуу үчүн модулдук, көп жолу колдонулуучу жана сүрөттөмө стилдерди жазууга үйрөтүлөт. Бирок иштеп чыгуучулар реалдуу тиркемелерге аралашканда, стилдер күтүлбөгөн аймактарга агып кетпей, UI функцияларын кошуу мүмкүн эместей сезилет. Бул маселе көп учурда өзүн-өзү аткаруу луп кар; теориялык жактан бир элементке же класска камтылган стилдер алар таандык эмес жерде көрсөтүлө баштайт. Бул иштеп чыгуучуну ачыкка чыккан стилдерди жокко чыгаруу үчүн дагы өзгөчө селекторлорду түзүүгө мажбурлайт, алар кокусунан глобалдык стилдерди жокко чыгарат жана башкалар. Катуу класс атын конвенциялар, мисалы, BEM, бул маселенин бир теориялык чечими болуп саналат. BEM (Блок, Элемент, Модификатор) методологиясы CSS файлдарынын ичинде көп жолу колдонулушун жана структурасын камсыз кылуу үчүн CSS класстарын атоонун системалуу жолу. Ушул сыяктуу конвенцияларды атоо элементтерди жана алардын абалын сүрөттөө үчүн домен тилин колдонуу менен когнитивдик жүктөмдү азайтат жана туура ишке ашырылса, чоң колдонмолор үчүн стилдерди тейлөөнү жеңилдетет. Чыныгы дүйнөдө, бирок, ал дайыма эле ушундай боло бербейт. Приоритеттер өзгөрүшү мүмкүн жана өзгөртүү менен ишке ашыруу шайкеш келбей калат. HTML түзүмүндөгү кичинекей өзгөртүүлөр CSS классынын аталышын өзгөртүүнү талап кылышы мүмкүн. Жогорку интерактивдүү алдыңкы тиркемелерде, BEM үлгүсүнөн кийинки класс аттары узун жана кыйын болуп калышы мүмкүн (мисалы, колдонмо-колдонуучунун жалпы кароосу__статус--аныктыктыгын текшерүү), жана ат коюу эрежелерин толук сактабоо системанын структурасын бузуп, ошону менен анын артыкчылыктарын жокко чыгарат. Бул кыйынчылыктарды эске алуу менен, иштеп чыгуучулар алкактарга кайрылышканы таң калыштуу эмес, Tailwind эң популярдуу CSS алкактары. Стильдер ортосундагы жеңе алгыс өзгөчөлүк согушу сыяктуу көрүнгөн нерсе менен күрөшүүгө аракет кылуунун ордуна, CSS Каскадынан баш тартуу жана толук изоляцияга кепилдик берүүчү куралдарды колдонуу оңой. Иштеп чыгуучулар коммуналдык кызматтарга көбүрөөк таянышат Кээ бир иштеп чыгуучулар каскаддык стилдерден качууну каалаарын кайдан билебиз? Бул атайын ушул максат үчүн иштелип чыккан CSS-in-JS алкактары сыяктуу "заманбап" алдыңкы куралдардын өсүшү. Белгилүү бир компоненттер менен тыгыз байланышкан обочолонгон стилдер менен иштөө таза абанын деми сыяктуу сезилиши мүмкүн. Бул нерселерди атоо зарылдыгын жок кылат - дагы эле эң жек көрүндү жана көп убакытты талап кылган алдыңкы тапшырмалардын бири - жана иштеп чыгуучуларга CSS мурасынын артыкчылыктарын толук түшүнбөстөн же пайдаланбастан жемиштүү болууга мүмкүндүк берет. Бирок CSS каскадын жокко чыгаруу өзүнүн көйгөйлөрү менен коштолот. Мисалы, JavaScript'те стилдерди түзүү оор конфигурацияларды талап кылат жана көбүнчө стилдердин компоненттерди белгилөө же HTML менен ыңгайсыз аралашуусуна алып келет. Кылдат каралган ат коюу конвенцияларынын ордуна, биз өзүбүз үчүн селекторлорду жана идентификаторлорду (мис., .jsx-3130221066) автогенерациялоочу куралдарды курууга уруксат беребиз, бул иштеп чыгуучулардан дагы башка псевдо-тил менен иштөөнү талап кылат. (Сиздин бардык компонентиңиздин useEffects эмне кылаарын түшүнүү үчүн когнитивдик жүк жетишсиз болгон сыяктуу!) Класстарды инструментке атоо жумушун андан ары абстракциялоо негизги мүчүлүштүктөрдү оңдоо көбүнчө иштеп чыгуучу куралдары сыяктуу жандуу мүчүлүштүктөрдү оңдоону колдогон жергиликтүү браузердин функцияларын колдонуунун ордуна, иштеп чыгуу үчүн түзүлгөн конкреттүү колдонмо версиялары менен чектелет дегенди билдирет. Биз веб-сайт берген нерселерди абстракциялоо үчүн колдонуп жаткан куралдарды оңдоо үчүн куралдарды иштеп чыгышыбыз керек окшойт - мунун баары стандарттуу CSS жазуудагы "оорудан" качуу үчүн. Бактыга жараша, заманбап CSS функциялары стандарттуу CSS жазууну ийкемдүү кылып гана тим болбостон, биз сыяктуу иштеп чыгуучуларга каскадды башкаруу жана аны биз үчүн иштөө үчүн көбүрөөк күч берет. CSS Cascade Layers сонун мисал, бирок таң калыштуу түрдө көңүл бурулбай калган дагы бир өзгөчөлүк бар - бирок ал жакында эле Базалык линияга шайкеш келгендиктен өзгөрүп жатат. CSS @scope At-Rule Мен CSS @scope at-rule биз камтылган стилден улам келип чыккан тынчсыздануу үчүн потенциалдуу даба деп эсептейм, бул бизди абстракциялар жана кошумча куруу куралдары үчүн жергиликтүү веб артыкчылыктарын бузууга мажбурлабайт. "@scope CSS эрежеси сизге DOM түзүмүнө өтө катуу туташтырбай туруп эле, өзгөчө бир DOM дарактарынын элементтерин тандап алууга, элементтерди так аныктоого мүмкүндүк берет, аларды жокко чыгаруу кыйын болгон өтө спецификалык селекторлорду жазбастан жана селекторлоруңузду DOM түзүмүнө өтө тыгыз байланыштырбастан." - MDN.

Башкача айтканда, биз мурасты, каскаддыкты, атүгүл кооптонууларды негизги бөлүп салбастан, белгилүү бир учурларда обочолонгон стилдер менен иштей алабыз.бул алдыцкы енугуунун узакка созулган башкы принциби болуп калды. Мындан тышкары, ал мыкты браузер камтууга ээ. Чынында, Firefox 146 декабрда @scope үчүн колдоо кошуп, аны биринчи жолу Baseline шайкеш кылган. Бул жерде @scope эрежеси менен BEM үлгүсүн колдонгон баскычты жөнөкөй салыштыруу:

<стиль> .button .button__text { /* баскычтын текст стилдери */ } .button .button__icon { /* баскыч сөлөкөтүнүн стилдери */ } .button--primary { негизги баскыч стилдери */ }

<стиль> @scope (.primary-button) { span:first-child { /* баскычтын текст стилдери */ } span: last-child { /* баскыч сөлөкөтүн стилдери */ } }

@Scope эрежеси азыраак татаалдык менен тактыкка мүмкүндүк берет. Иштеп чыгуучу мындан ары класс атын колдонуу менен чектерди түзүүнүн кереги жок, бул өз кезегинде аларга HTML элементтеринин негизинде селекторлорду жазууга мүмкүндүк берет, ошону менен CSS класс аталыштарынын көрсөтмөлүү үлгүлөрүнүн зарылдыгын жок кылат. Жөн гана класстын аталышын башкаруу зарылдыгын алып салуу менен, @scope чоң долбоорлордо CSS менен байланышкан коркуу сезимин басаңдата алат. Негизги колдонуу Баштоо үчүн, CSS'иңизге @scope эрежесин кошуңуз жана стилдер камтыла турган түпкү селекторду киргизиңиз: @scope () { /* Стильдер <тандоочу> */ }

Ошентип, мисалы, биз стилдерди

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