នៅពេលរៀនគោលការណ៍នៃ CSS ជាមូលដ្ឋាន វាត្រូវបានបង្រៀនឱ្យសរសេររចនាប័ទ្មម៉ូឌុល ប្រើឡើងវិញបាន និងពិពណ៌នា ដើម្បីធានាបាននូវការថែរក្សា។ ប៉ុន្តែនៅពេលដែលអ្នកអភិវឌ្ឍន៍ចូលរួមជាមួយកម្មវិធីក្នុងពិភពពិត វាច្រើនតែមានអារម្មណ៍ថាមិនអាចបន្ថែមមុខងារ UI ដោយគ្មានស្ទីលលេចធ្លាយទៅក្នុងផ្នែកដែលមិនចង់បាន។ បញ្ហានេះជារឿយៗធ្លាក់ចូលទៅក្នុងរង្វិលជុំដែលបំពេញដោយខ្លួនឯង; រចនាប័ទ្មដែលត្រូវបានកំណត់តាមទ្រឹស្តីទៅធាតុមួយ ឬថ្នាក់ចាប់ផ្តើមបង្ហាញកន្លែងដែលពួកគេមិនមែនជាកម្មសិទ្ធិ។ នេះបង្ខំឱ្យអ្នកអភិវឌ្ឍន៍បង្កើតឧបករណ៍ជ្រើសរើសជាក់លាក់បន្ថែមទៀតដើម្បីបដិសេធរចនាប័ទ្មលេចធ្លាយ ដែលបន្ទាប់មកជំនួសរចនាប័ទ្មសកលដោយចៃដន្យ។ល។ អនុសញ្ញាឈ្មោះថ្នាក់រឹង ដូចជា BEM គឺជាដំណោះស្រាយទ្រឹស្តីមួយចំពោះបញ្ហានេះ។ វិធីសាស្រ្ត BEM (Block, Element, Modifier) ​​គឺជាវិធីជាប្រព័ន្ធមួយក្នុងការដាក់ឈ្មោះថ្នាក់ CSS ដើម្បីធានានូវលទ្ធភាពប្រើប្រាស់ឡើងវិញ និងរចនាសម្ព័ន្ធនៅក្នុងឯកសារ CSS ។ ការដាក់ឈ្មោះអនុសញ្ញាដូចនេះអាចកាត់បន្ថយបន្ទុកការយល់ដឹងដោយប្រើប្រាស់ភាសាដែន ដើម្បីពិពណ៌នាអំពីធាតុ និងស្ថានភាពរបស់វា ហើយប្រសិនបើអនុវត្តបានត្រឹមត្រូវ អាចធ្វើឱ្យរចនាប័ទ្មសម្រាប់កម្មវិធីធំងាយស្រួលក្នុងការថែទាំ។ ទោះយ៉ាងណាក៏ដោយ នៅក្នុងពិភពពិត វាមិនតែងតែដំណើរការដូចនោះទេ។ អាទិភាពអាចផ្លាស់ប្តូរ ហើយជាមួយនឹងការផ្លាស់ប្តូរ ការអនុវត្តក្លាយជាមិនស៊ីសង្វាក់គ្នា។ ការផ្លាស់ប្តូរតិចតួចចំពោះរចនាសម្ព័ន្ធ HTML អាចតម្រូវឱ្យមានការកែប្រែឈ្មោះថ្នាក់ CSS ជាច្រើន។ ជាមួយនឹងកម្មវិធីផ្នែកខាងមុខដែលមានអន្តរកម្មខ្ពស់ ឈ្មោះថ្នាក់តាមលំនាំ BEM អាចក្លាយទៅជាវែង និងគ្មានប្រយោជន៍ (ឧ. app-user-overview__status--is-authenticating) ហើយការមិនប្រកាន់ខ្ជាប់យ៉ាងពេញលេញទៅនឹងច្បាប់ដាក់ឈ្មោះធ្វើឱ្យខូចរចនាសម្ព័ន្ធរបស់ប្រព័ន្ធ ដោយហេតុនេះការបដិសេធផលប្រយោជន៍របស់វា។ ដោយសារបញ្ហាប្រឈមទាំងនេះ វាគ្មានអ្វីចម្លែកទេដែលអ្នកអភិវឌ្ឍន៍បានងាកទៅរកក្របខ័ណ្ឌ Taiwind គឺជាក្របខ័ណ្ឌ CSS ដែលពេញនិយមបំផុត។ ជាជាងការព្យាយាមប្រយុទ្ធប្រឆាំងនឹងអ្វីដែលហាក់ដូចជាសង្រ្គាមជាក់លាក់ដែលមិនអាចឈ្នះបានរវាងរចនាប័ទ្ម វាជាការងាយស្រួលក្នុងការបោះបង់ចោល CSS Cascade ហើយប្រើឧបករណ៍ដែលធានាភាពឯកោពេញលេញ។ អ្នកអភិវឌ្ឍន៍ពឹងផ្អែកលើឧបករណ៍ប្រើប្រាស់ តើ​យើង​ដឹង​ដោយ​របៀប​ណា​ថា​អ្នក​អភិវឌ្ឍន៍​មួយ​ចំនួន​មាន​ចំណាប់​អារម្មណ៍​ក្នុង​ការ​ជៀសវាង​រចនាប័ទ្ម​ល្បាក់? វាគឺជាការកើនឡើងនៃឧបករណ៍ខាងមុខ "ទំនើប" ដូចជា CSS-in-JS frameworks — ដែលត្រូវបានរចនាឡើងជាពិសេសសម្រាប់គោលបំណងនោះ។ ការធ្វើការជាមួយរចនាប័ទ្មដាច់ស្រយាលដែលមានវិសាលភាពយ៉ាងតឹងរឹងចំពោះសមាសធាតុជាក់លាក់អាចហាក់ដូចជាដង្ហើមនៃខ្យល់ស្រស់។ វាដកចេញនូវតម្រូវការក្នុងការដាក់ឈ្មោះរបស់ផ្សេងៗ - នៅតែជាកិច្ចការផ្នែកខាងមុខដែលគួរឱ្យស្អប់បំផុត និងចំណាយពេលវេលាច្រើនបំផុត - និងអនុញ្ញាតឱ្យអ្នកអភិវឌ្ឍន៍មានផលិតភាពដោយមិនចាំបាច់យល់ដឹងពេញលេញ ឬប្រើប្រាស់អត្ថប្រយោជន៍នៃមរតក CSS ។ ប៉ុន្តែការលុបចោល CSS Cascade កើតឡើងជាមួយនឹងបញ្ហាផ្ទាល់របស់វា។ ជាឧទាហរណ៍ ការតែងរចនាប័ទ្មក្នុង JavaScript ទាមទារការកំណត់រចនាសម្ព័ន្ធសំណង់ធ្ងន់ៗ ហើយជារឿយៗនាំឱ្យរចនាប័ទ្មដែលច្របូកច្របល់ជាមួយការសម្គាល់សមាសធាតុ ឬ HTML ។ ជំនួសឱ្យការពិចារណាដោយប្រុងប្រយ័ត្ននូវអនុសញ្ញាដាក់ឈ្មោះ យើងអនុញ្ញាតឱ្យបង្កើតឧបករណ៍ដើម្បីបង្កើតឧបករណ៍ជ្រើសរើស និងឧបករណ៍កំណត់អត្តសញ្ញាណដោយស្វ័យប្រវត្តិសម្រាប់យើង (ឧ. jsx-3130221066) ដោយតម្រូវឱ្យអ្នកអភិវឌ្ឍន៍បន្តប្រើភាសាក្លែងក្លាយផ្សេងទៀតនៅក្នុងខ្លួនវាផ្ទាល់។ (ដូចជាប្រសិនបើបន្ទុកការយល់ដឹងនៃការយល់ដឹងពីអ្វីដែល ផលប៉ះពាល់នៃការប្រើប្រាស់សមាសធាតុរបស់អ្នក គឺមិនគ្រប់គ្រាន់ទេ!) ការពន្យល់បន្ថែមអំពីការងារនៃការដាក់ឈ្មោះថ្នាក់ទៅឧបករណ៍មានន័យថាការបំបាត់កំហុសជាមូលដ្ឋានជារឿយៗត្រូវបានរារាំងចំពោះកំណែកម្មវិធីជាក់លាក់ដែលបានចងក្រងសម្រាប់ការអភិវឌ្ឍន៍ ជាជាងការប្រើប្រាស់លក្ខណៈពិសេសរបស់កម្មវិធីរុករកតាមអ៊ីនធឺណិតដែលគាំទ្រការកែកំហុសផ្ទាល់ ដូចជាឧបករណ៍អ្នកអភិវឌ្ឍន៍។ វាស្ទើរតែដូចជាយើងត្រូវបង្កើតឧបករណ៍ដើម្បីបំបាត់កំហុសឧបករណ៍ដែលយើងកំពុងប្រើដើម្បីអរូបីនូវអ្វីដែលគេហទំព័រផ្តល់រួចហើយ — ទាំងអស់សម្រាប់ជាប្រយោជន៍នៃការរត់ចេញពី "ការឈឺចាប់" នៃការសរសេរស្តង់ដារ CSS ។ ជាសំណាងល្អ លក្ខណៈពិសេស CSS ទំនើបមិនត្រឹមតែធ្វើឱ្យការសរសេរស្តង់ដារ CSS កាន់តែមានភាពបត់បែនប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងផ្តល់ឱ្យអ្នកអភិវឌ្ឍន៍ដូចជាពួកយើងនូវថាមពលកាន់តែច្រើនក្នុងការគ្រប់គ្រងល្បាក់ និងធ្វើឱ្យវាដំណើរការសម្រាប់យើង។ CSS Cascade Layers គឺជាឧទាហរណ៍ដ៏អស្ចារ្យមួយ ប៉ុន្តែមានលក្ខណៈពិសេសមួយទៀតដែលទទួលបានការចាប់អារម្មណ៍គួរឱ្យភ្ញាក់ផ្អើល - ទោះបីជាវាកំពុងផ្លាស់ប្តូរឥឡូវនេះដែលវាបានក្លាយជា Baseline ដែលត្រូវគ្នានាពេលថ្មីៗនេះក៏ដោយ។ CSS @scope At-Rule ខ្ញុំចាត់ទុក CSS @scope at-rule ជាការព្យាបាលដ៏មានសក្តានុពលសម្រាប់ប្រភេទនៃការថប់បារម្ភដែលបណ្ដាលមកពីរចនាប័ទ្មដែលយើងបានគ្របដណ្តប់ ដែលមិនបង្ខំយើងឱ្យសម្របសម្រួលអត្ថប្រយោជន៍គេហទំព័រដើមសម្រាប់ការអរូបី និងឧបករណ៍បង្កើតបន្ថែម។ "ច្បាប់ @scope CSS អាចឱ្យអ្នកជ្រើសរើសធាតុនៅក្នុងអនុមែកធាង DOM ជាក់លាក់ ដោយកំណត់គោលដៅយ៉ាងជាក់លាក់ដោយមិនចាំបាច់សរសេរកម្មវិធីជ្រើសរើសជាក់លាក់ពេក ដែលពិបាកនឹងបដិសេធ ហើយដោយមិនភ្ជាប់ឧបករណ៍ជ្រើសរើសរបស់អ្នកតឹងពេកទៅនឹងរចនាសម្ព័ន្ធ DOM ។"— MDN

ម្យ៉ាងវិញទៀត យើងអាចធ្វើការជាមួយរចនាប័ទ្មដាច់ស្រយាលនៅក្នុងករណីជាក់លាក់ដោយមិនចាំបាច់លះបង់មរតក ការបាត់បង់ ឬសូម្បីតែការបំបែកមូលដ្ឋាននៃការព្រួយបារម្ភនោះគឺជាគោលការណ៍ណែនាំដ៏យូរអង្វែងនៃការអភិវឌ្ឍន៍ផ្នែកខាងមុខ។ លើសពីនេះ វាមានការគ្របដណ្តប់កម្មវិធីរុករកដ៏ល្អឥតខ្ចោះ។ តាមពិត Firefox 146 បានបន្ថែមការគាំទ្រសម្រាប់ @scope នៅក្នុងខែធ្នូ ដែលធ្វើឱ្យវាអាចប្រើជាមូលដ្ឋានជាលើកដំបូង។ នេះគឺជាការប្រៀបធៀបដ៏សាមញ្ញមួយរវាងប៊ូតុងដោយប្រើលំនាំ BEM ធៀបនឹងច្បាប់ @scope៖

<រចនាប័ទ្ម> .button .button__text { /* រចនាប័ទ្មអត្ថបទប៊ូតុង */ } .button .button__icon { /* រចនាប័ទ្មរូបតំណាងប៊ូតុង */ } .button--primary { រចនាប័ទ្មប៊ូតុងចម្បង */ }

<រចនាប័ទ្ម> @scope (.primary-button) { វិសាលភាព៖ កូនទីមួយ { // រចនាប័ទ្មអត្ថបទប៊ូតុង */ } span: last-child { //* រចនាប័ទ្មរូបតំណាងប៊ូតុង */ } }

ច្បាប់ @scope អនុញ្ញាតឱ្យមានភាពច្បាស់លាស់ជាមួយនឹងភាពស្មុគស្មាញតិច។ អ្នកអភិវឌ្ឍន៍លែងត្រូវការបង្កើតព្រំដែនដោយប្រើឈ្មោះថ្នាក់ ដែលអនុញ្ញាតឱ្យពួកគេសរសេរកម្មវិធីជ្រើសរើសដោយផ្អែកលើធាតុ HTML ដើម ដោយហេតុនេះលុបបំបាត់តម្រូវការសម្រាប់គំរូឈ្មោះថ្នាក់ CSS តាមវេជ្ជបញ្ជា។ ដោយគ្រាន់តែដកចេញនូវតម្រូវការសម្រាប់ការគ្រប់គ្រងឈ្មោះថ្នាក់ @scope អាចកាត់បន្ថយការភ័យខ្លាចដែលទាក់ទងនឹង CSS នៅក្នុងគម្រោងធំៗ។ ការប្រើប្រាស់មូលដ្ឋាន ដើម្បីចាប់ផ្តើម សូមបន្ថែមច្បាប់ @scope ទៅ CSS របស់អ្នក ហើយបញ្ចូលជម្រើស root មួយណាដែលរចនាប័ទ្មនឹងត្រូវបានកំណត់៖ @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