Tạo Layout Phức Tạp với Bootstrap Grid

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 12 tháng 2, 2025

Trong bài học này, chúng ta sẽ tìm hiểu cách tạo các bố cục web phức tạp hơn bằng Bootstrap Grid, bao gồm Nested Grid (Lồng ghép lưới), Offset (canh lề cột)Alignment (căn chỉnh cột và hàng). Chúng ta cũng sẽ so sánh khi nào nên dùng Grid System thay vì Flexbox.

1. Nested Grid – Lồng ghép hàng và cột trong Bootstrap

Trong Bootstrap, chúng ta có thể lồng ghép lưới (Nested Grid) bằng cách tạo hàng (row) bên trong cột (col). Điều này giúp bố cục linh hoạt hơn khi cần chia nhỏ nội dung.

Ví dụ Nested Grid

<div class="container">
    <div class="row">
        <div class="col-md-6 bg-primary text-white p-3">
            Cột chính
            <div class="row">
                <div class="col-6 bg-warning p-2">Cột con 1</div>
                <div class="col-6 bg-success p-2">Cột con 2</div>
            </div>
        </div>
        <div class="col-md-6 bg-secondary text-white p-3">
            Cột chính 2
        </div>
    </div>
</div>

Giải thích:

  • Cột chính (col-md-6) chứa một hàng (row) khác bên trong.
  • Hàng lồng ghép có 2 cột con (col-6), chia đều cột chính.
  • Đây là cách giúp chúng ta chia nhỏ bố cục mà vẫn đảm bảo tính linh hoạt.

2. Offset & Alignment – Cách căn lề và căn chỉnh nội dung

Offset – Canh lề cột

Bootstrap cung cấp class offset-* để đẩy cột sang bên phải, giúp cân bằng bố cục.

Ví dụ sử dụng Offset

<div class="container">
    <div class="row">
        <div class="col-md-4 offset-md-2 bg-primary text-white p-3">
            Cột có offset
        </div>
    </div>
</div>

Giải thích:

  • col-md-4 offset-md-2 → Cột này có chiều rộng 4 cột, nhưng được đẩy sang phải 2 cột.

Alignment – Căn chỉnh hàng và cột

Bootstrap sử dụng justify-content-* và align-items-* để căn chỉnh nội dung.

Class Mô tả
.justify-content-start Căn trái (mặc định)
.justify-content-center Căn giữa theo chiều ngang
.justify-content-end Căn phải
.align-items-start Căn trên theo chiều dọc
.align-items-center Căn giữa theo chiều dọc
.align-items-end Căn dưới theo chiều dọc

Ví dụ căn chỉnh nội dung

<div class="container">
    <div class="row justify-content-center align-items-center" style="height: 300px;">
        <div class="col-4 bg-warning text-dark p-3">
            Nội dung căn giữa
        </div>
    </div>
</div>

Giải thích:

  • justify-content-center → Căn giữa theo chiều ngang.
  • align-items-center → Căn giữa theo chiều dọc.
  • style="height: 300px;" giúp kiểm tra hiệu ứng căn giữa theo chiều dọc.

3. Khi nào nên dùng Grid System thay vì Flexbox?

Tiêu chí Bootstrap Grid Flexbox
Bố cục phức tạp Tốt hơn khi có nhiều hàng & cột Không phù hợp
Canh chỉnh phần tử Hơi cứng nhắc Linh hoạt hơn
Tạo layout responsive Dễ dàng với .col-sm-*, .col-md-* Phải tùy chỉnh nhiều
Căn chỉnh theo trục ngang & dọc Phức tạp Rất dễ dàng

Gợi ý:

  • Dùng Grid khi xây dựng bố cục tổng thể (header, sidebar, content, footer).
  • Dùng Flexbox khi căn chỉnh phần tử trong một hàng (menu, thanh điều hướng, nút bấm).
  • Có thể kết hợp cả hai để tối ưu thiết kế!

4. Bài tập thực hành

Yêu cầu

Hãy xây dựng một giao diện web hoàn chỉnh với Bootstrap Grid, có các phần:

  • Header với menu điều hướng.
  • Section giới thiệuNested Grid.
  • Bố cục có Offset & Alignment để căn chỉnh nội dung đẹp hơn.

Gợi ý bài tập

<div class="container">
    <header class="row bg-dark text-white p-3">
        <div class="col-md-4">Logo</div>
        <div class="col-md-8 text-end">Menu</div>
    </header>
    
    <section class="row mt-4">
        <div class="col-md-6 offset-md-3 bg-light p-3">
            <h2 class="text-center">Giới thiệu Bootstrap Grid</h2>
        </div>
    </section>
    
    <section class="row mt-4">
        <div class="col-md-4 bg-primary text-white p-3">Cột 1</div>
        <div class="col-md-4 bg-success text-white p-3">Cột 2</div>
        <div class="col-md-4 bg-warning text-dark p-3">Cột 3</div>
    </section>
</div>

Kết luận

  • Bạn đã học cách tạo layout phức tạp bằng Bootstrap Grid.
  • Hiểu về Nested Grid, OffsetAlignment.
  • Phân biệt khi nào dùng Grid và khi nào dùng Flexbox.
  • Hãy thực hành nhiều hơn để thành thạo Bootstrap Grid!
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ