Bài 28: Thiết kế bố cục nội dung + sidebar

yanyan

By yanyan

Đăng ngày Tháng 7 12, 2025

Sau khi đã tạo xong header và menu responsive, bước tiếp theo là xây dựng bố cục thân trang gồm:

  • Nội dung chính (main content)
  • Sidebar (cột bên)

Bố cục này rất phổ biến trong các trang blog, tin tức, cửa hàng,…
Trong bài này, bạn sẽ học:

  • Cách chia layout 2 cột bằng Flexbox
  • Làm sidebar nằm bên phải trên desktop
  • Tự động xuống dưới nội dung trên mobile

1. Cấu trúc HTML

<div class="page-container">
  <main class="main-content">
    <h1>Bài viết nổi bật</h1>
    <p>Đây là phần nội dung chính của trang.</p>
  </main>

  <aside class="sidebar">
    <h2>Tin mới</h2>
    <ul>
      <li><a href="#">Tin 1</a></li>
      <li><a href="#">Tin 2</a></li>
    </ul>
  </aside>
</div>

2. CSS cho layout 2 cột

.page-container {
  display: flex;
  gap: 24px;
  padding: 24px;
  max-width: 1200px;
  margin: auto;
}

.main-content {
  flex: 3;
}

.sidebar {
  flex: 1;
  background: #f8f8f8;
  padding: 16px;
  border-left: 1px solid #ddd;
}

→ Mặc định trên desktop, layout sẽ chia theo tỷ lệ 3:1


3. Responsive: ẩn sidebar hoặc chuyển xuống dưới

@media (max-width: 768px) {
  .page-container {
    flex-direction: column;
  }

  .sidebar {
    border-left: none;
    border-top: 1px solid #ddd;
    margin-top: 24px;
  }
}

→ Trên mobile:

  • Các phần xếp dọc
  • Sidebar nằm dưới nội dung chính
  • Vẫn giữ khoảng cách hợp lý

4. Mở rộng: sidebar có thể ẩn/hiện bằng nút

Bạn có thể thêm một nút ẩn/hiện sidebar bằng JavaScript nếu muốn tinh gọn giao diện mobile hơn.

Ví dụ thêm:

<button class="toggle-sidebar">Mở Sidebar</button>
document.querySelector('.toggle-sidebar').onclick = function () {
  document.querySelector('.sidebar').classList.toggle('active');
};

Và CSS:

.sidebar {
  display: none;
}
.sidebar.active {
  display: block;
}

5. Gợi ý thiết kế sidebar

  • Thêm widget: tin nổi bật, tag, bài viết liên quan
  • Gắn thêm quảng cáo hoặc sản phẩm nổi bật
  • Tạo các box có tiêu đề và khoảng cách rõ ràng

Tóm tắt bài học

Thành phầnCông nghệ áp dụng
2 cột nội dungFlexbox
Tỷ lệ cộtflex: 3flex: 1
Responsive layoutflex-direction: column trên mobile
Tách giao diện mobileBorder, margin, media query

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.