© Khmer Angkor Academy - sophearithput168

Grid System

ប្រព័ន្ធ​ក្រឡា​ចត្រង្គ​របស់ Bootstrap (Grid System)

Grid System គឺ​ជា​ស្នូល​កណ្តាល (core) និង​ជា​ផ្នែក​សំខាន់​បំផុត​នៃ Bootstrap ដែល​ជួយ​ឲ្យ​អ្នក​រៀបចំ layout របស់​គេហទំព័រ​បាន​ងាយស្រួល​និង responsive។ វា​ប្រើ​ប្រព័ន្ធ 12 columns (12 ជួរ​ឈរ) ដែល​អ្នក​អាច​បែងចែក​តាម​ចំណង់​ចំណូលចិត្ត។

🎯 ហេតុ​អ្វី​ត្រូវ​មាន Grid System?

ប្រៀប​ដូចជា​ការ​សង់​ផ្ទះ ដែល​យើង​ត្រូវ​មាន​បង្គោល និង​គ្រឹះ​ផ្ទះ​មុន​សិន​ទើប​អាច​សង់​ជញ្ជាំង​និង​ដំបូល​បាន។ Grid System ក៏​ដូច​គ្នា​ដែរ - វា​ជា​គ្រឹះ​ដែល​យើង​ប្រើ​សម្រាប់​រៀបចំ​ទីតាំង​នៃ​ធាតុ​ផ្សេងៗ​នៅ​លើ​គេហទំព័រ។

📐 គោលការណ៍​មូលដ្ឋាន​នៃ Grid System:

ផ្នែក តួនាទី Class ពិពណ៌នា
📦 Container ប្រអប់​ធំ​ដាក់​គ្រប់​យ៉ាង .container.container-fluid ជា​ឪពុក​ដែល​ផ្ទុក​គ្រប់​យ៉ាង
➡️ Row ជួរ​ដេក (horizontal) .row ដាក់​ columns នៅ​ក្នុង​នេះ
⬇️ Column ជួរ​ឈរ (vertical) .col-* ផ្ទុក​មាតិកា​ជាក់ស្តែង

🔢 ហេតុ​អ្វី​ជា 12 Columns?

Bootstrap ជ្រើសរើស​លេខ 12 ព្រោះ​វា​អាច​បែងចែក​បាន​ច្រើន​មុខ:

  • ✅ 12 ÷ 1 = 12 (1 column ពេញ​ទំហំ)
  • ✅ 12 ÷ 2 = 6 (2 columns ស្មើ​គ្នា)
  • ✅ 12 ÷ 3 = 4 (3 columns ស្មើ​គ្នា)
  • ✅ 12 ÷ 4 = 3 (4 columns ស្មើ​គ្នា)
  • ✅ 12 ÷ 6 = 2 (6 columns ស្មើ​គ្នា)
  • ✅ 12 ÷ 12 = 1 (12 columns តូចៗ)

ដូច្នេះ​លេខ 12 ផ្តល់​ភាព​ flexible ខ្ពស់​ក្នុង​ការ​បែងចែក layout។

📏 រចនាសម្ព័ន្ធ​ដូច​ម្តេច?

Container (ប្រអប់​ធំ - ទទឹង​កំណត់)
└── Row (ជួរ​ដេក)
    ├── Column 1 (ជួរ​ឈរ ទី 1)
    ├── Column 2 (ជួរ​ឈរ ទី 2)
    └── Column 3 (ជួរ​ឈរ ទី 3)

🎨 ឧទាហរណ៍​នៃ​ការ​បែងចែក 12 columns:

Layout Columns Class ប្រើ​សម្រាប់
1 ជួរ​ពេញ 12 .col-12 Header, Footer, Banner
2 ជួរ​ស្មើ​គ្នា 6 + 6 .col-6 (x2) Content + Sidebar
3 ជួរ​ស្មើ​គ្នា 4 + 4 + 4 .col-4 (x3) Features, Cards
4 ជួរ​ស្មើ​គ្នា 3 + 3 + 3 + 3 .col-3 (x4) Gallery, Products
Content + Sidebar 8 + 4 .col-8 + .col-4 Blog layout
Sidebar + Content 3 + 9 .col-3 + .col-9 Dashboard

📦 Container Types - ប្រភេទ​ប្រអប់​ផ្សេងៗ

Bootstrap មាន Container ចំនួន 3 ប្រភេទ ដែល​មាន​អាកប្បកិរិយា​ខុសៗ​គ្នា:

🔍 ការ​ប្រៀបធៀប​លម្អិត:

Container ទទឹង Breakpoints ប្រើ​ពេល​ណា
.container កំណត់​តាម​អេក្រង់ ខុសៗ​គ្នា​តាម​ទំហំ គេហទំព័រ​ធម្មតា (ទទឹង​មិន​ពេញ​អេក្រង់)
.container-fluid 100% ពេញ​អេក្រង់ 100% គ្រប់​ទំហំ គេហទំព័រ​ចង់​បាន​ទទឹង​ពេញ
.container-{breakpoint} 100% រហូត​ដល់​ breakpoint ពេញ​រហូត​ដល់​ទំហំ​កំណត់ ចង់​បាន​ការ​គ្រប់គ្រង​ច្បាស់លាស់

📊 ទទឹង​របស់ .container តាម​ទំហំ​អេក្រង់:

Breakpoint ទំហំ​អេក្រង់ ទទឹង Container ឧទាហរណ៍​ឧបករណ៍
Extra small (xs) < 576px 100% ទូរស័ព្ទ​តូច (iPhone SE)
Small (sm) ≥ 576px 540px ទូរស័ព្ទ (iPhone, Android)
Medium (md) ≥ 768px 720px Tablet (iPad Mini)
Large (lg) ≥ 992px 960px Tablet ធំ (iPad Pro)
Extra large (xl) ≥ 1200px 1140px Laptop, Desktop តូច
Extra extra large (xxl) ≥ 1400px 1320px Desktop ធំ, TV

🎯 ជ្រើសរើស Container ដូច​ម្តេច?

ប្រើ .container ពេល:

  • ✅ ចង់​បាន​ម៉ាស៊ីន​ទទេ​ពីរ​ខាង (margins)
  • ✅ មាតិកា​មិន​គួរ​លូត​ពេក​នៅ​អេក្រង់​ធំ
  • ✅ រចនា​គេហទំព័រ​ស្តង់ដា (Blog, Corporate site)

ប្រើ .container-fluid ពេល:

  • ✅ ចង់​បាន​ទទឹង​ពេញ 100%
  • ✅ គេហទំព័រ​មាន​រូបភាព​ផ្ទៃ​ខាង​ក្រោយ (background)
  • ✅ Admin dashboard, Image gallery

ប្រើ .container-{breakpoint} ពេល:

  • ✅ ចង់​គ្រប់គ្រង​ច្បាស់លាស់​នៅ​ទំហំ​ណា​មួយ
  • ✅ ចង់​បាន fluid រហូត​ដល់​ទំហំ​ជាក់​លាក់

📏 Column Sizes - ទំហំ​ជួរ​ឈរ

Column ក្នុង Bootstrap អាច​មាន​ទំហំ​ចាប់​ពី 1 ដល់ 12។ អ្នក​អាច​បែង​ចែក​តាម​ចំណង់​ចំណូលចិត្ត។

🎨 របៀប​គណនា Column:

ច្បាប់​មូលដ្ឋាន: ផលបូក​នៃ columns ក្នុង 1 row ត្រូវ​តែ ≤ 12

Layout ចង់​បាន គណនា Class សមមូល %
1 column ពេញ 12 .col-12 100%
2 columns ស្មើ 12 ÷ 2 = 6 .col-6 50% ម្នាក់​មួយ
3 columns ស្មើ 12 ÷ 3 = 4 .col-4 33.33% ម្នាក់​មួយ
4 columns ស្មើ 12 ÷ 4 = 3 .col-3 25% ម្នាក់​មួយ
Sidebar + Content 3 + 9 = 12 .col-3 + .col-9 25% + 75%
Content + Sidebar 8 + 4 = 12 .col-8 + .col-4 66.67% + 33.33%

⚠️ អ្វី​កើត​ឡើង​បើ​លើស 12?

បើ​ផលបូក​លើស 12, columns បន្ថែម​នឹង​ចុះ​ជួរ​ថ្មី (wrap to new line):

<div class="row">
  <div class="col-8">Column 1 (8)</div>
  <div class="col-6">Column 2 (6)</div>  <!-- ចុះ​ជួរ​ថ្មី -->
</div>

🔄 Auto-width Columns:

ប្រើ .col ដោយ​មិន​បាន​លេខ = Bootstrap បែងចែក​ស្មើៗ​គ្នា​ដោយ​ស្វ័យប្រវត្តិ

<div class="row">
  <div class="col">Auto 1</div>
  <div class="col">Auto 2</div>
  <div class="col">Auto 3</div>
</div>


📱 Responsive Breakpoints - ចំណុច​ផ្លាស់ប្តូរ​តាម​ទំហំ

នេះ​គឺ​ជា​ចំណុច​ដ៏​មាន​អានុភាព​បំផុត​នៃ Bootstrap Grid! អ្នក​អាច​កំណត់​ឲ្យ columns មាន​ទំហំ​ខុសៗ​គ្នា​តាម​ទំហំ​អេក្រង់។

🎯 Breakpoint Classes:

Breakpoint Class Prefix ទំហំ ឧបករណ៍ ឧទាហរណ៍
Extra small (none) < 576px ទូរស័ព្ទ​តូច .col-6
Small sm ≥ 576px ទូរស័ព្ទ .col-sm-6
Medium md ≥ 768px Tablet .col-md-6
Large lg ≥ 992px Laptop .col-lg-6
Extra large xl ≥ 1200px Desktop .col-xl-6
Extra extra large xxl ≥ 1400px Desktop ធំ .col-xxl-6

🎨 ឧទាហរណ៍​ការ​ប្រើប្រាស់:

<div class="col-12 col-md-6 col-lg-4">
  Responsive Column
</div>

ន័យ​ថា:

  • 📱 នៅ​ទូរស័ព្ទ (xs): col-12 = 100% ទទឹង (ពេញ​មួយ​ជួរ)
  • 📱 នៅ​ទូរស័ព្ទ/Tablet (md): col-md-6 = 50% ទទឹង (២ ក្នុង​មួយ​ជួរ)
  • 💻 នៅ Laptop+ (lg): col-lg-4 = 33.33% ទទឹង (៣ ក្នុង​មួយ​ជួរ)

📐 Mobile-First Approach:

Bootstrap ប្រើ Mobile-First ន័យ​ថា classes ដំណើរការ​ពី​អេក្រង់​តូច​ឡើង​ធំ:

Class ដំណើរការ​លើ ពន្យល់
.col-6 គ្រប់​ទំហំ ចាប់​ពី xs រហូត​ដល់ xxl
.col-sm-6 ≥ 576px ចាប់​ពី sm រហូត​ដល់ xxl
.col-md-6 ≥ 768px ចាប់​ពី md រហូត​ដល់ xxl
.col-lg-6 ≥ 992px ចាប់​ពី lg រហូត​ដល់ xxl

🎁 Nested Columns - Columns ក្នុង Columns

អ្នក​អាច​ដាក់ row និង columns ថ្មី​ទៅ​ក្នុង column ដែល​មាន​ស្រេច​ហើយ។ ការ​ធ្វើ​បែប​នេះ​ហៅ​ថា "nesting"។

📦 រចនាសម្ព័ន្ធ:

Container
└── Row 1
    └── Column 1
        └── Row 2 (Nested)
            ├── Column 2.1
            ├── Column 2.2
            └── Column 2.3

🎯 ពេល​ណា​ត្រូវ​ប្រើ Nested Columns?

  • ✅ ចង់​បែង​ចែក column ធំ​ជា​ផ្នែក​តូចៗ
  • ✅ Layout ស្មុកស្មាញ (Dashboard, Complex forms)
  • ✅ Card ដែល​មាន​ layout ខាងក្នុង
  • ✅ Gallery ជាមួយ​ផ្នែក​ក្នុង​ផ្សេងៗ

⚠️ ចំណាំ​សំខាន់:

  • Nested row មាន 12 columns ថ្មី​របស់​ខ្លួន​វា
  • Nested columns គិត​ទាក់ទង​នឹង parent column, មិន​មែន​ outer container
  • ជៀសវាង​ការ nest ជ្រៅ​ពេក (ជាង 2-3 levels) ព្រោះ​អាច​ធ្វើ​ឲ្យ​ស្មុកស្មាញ

📐 Gutters (Spacing) - ចន្លោះ​រវាង Columns

Gutter គឺ​ជា​ចន្លោះ​ទំនេរ (spacing/padding) រវាង columns។ Bootstrap 5 ផ្តល់​ការ​គ្រប់គ្រង gutters ដ៏​ល្អ​ណាស់។

🎯 ប្រភេទ Gutter Classes:

Class ប៉ះពាល់ ឧទាហរណ៍ ប្រើ​ពេល​ណា
.g-* ទាំង​ផ្ដេក និង​ឈរ .g-3 ចង់​ចន្លោះ​ស្មើ​គ្នា​ទាំង​ពីរ​ទិស
.gx-* តែ​ផ្ដេក (horizontal) .gx-4 ចង់​ចន្លោះ​ឆ្វេង-ស្តាំ​ប៉ុណ្ណោះ
.gy-* តែ​ឈរ (vertical) .gy-5 ចង់​ចន្លោះ​លើ-ក្រោម​ប៉ុណ្ណោះ
.g-0 លុប​ចន្លោះ .g-0 មិន​ចង់​បាន​ចន្លោះ

📏 ទំហំ Gutter (0-5):

Class Spacing rem px (approx)
.g-0 គ្មាន 0 0px
.g-1 តូច​បំផុត 0.25rem ~4px
.g-2 តូច 0.5rem ~8px
.g-3 ធម្មតា (default) 1rem ~16px
.g-4 ធំ 1.5rem ~24px
.g-5 ធំ​បំផុត 3rem ~48px

🎨 ឧទាហរណ៍​ប្រើប្រាស់:

<!-- គ្មាន​ចន្លោះ -->
<div class="row g-0">...</div>

<!-- ចន្លោះ​តូច -->
<div class="row g-2">...</div>

<!-- ចន្លោះ​ធម្មតា -->
<div class="row g-3">...</div>

<!-- ចន្លោះ​ឆ្វេង-ស្តាំ​ប៉ុណ្ណោះ -->
<div class="row gx-4">...</div>

<!-- ចន្លោះ​លើ-ក្រោម​ប៉ុណ្ណោះ -->
<div class="row gy-5">...</div>