Cơ bảnKiến thức cơ bản

Flexbox CSS: Hướng dẫn căn chỉnh layout

8 phút đọc0 lượt xem
#flexbox#css#layout#frontend#responsive

Flexbox là gì?

Flexbox (Flexible Box Layout) là một module CSS giúp bạn tạo layout dễ dàng. Thay vì dùng float hay position phức tạp, Flexbox cho phép căn chỉnh, phân bố không gian giữa các phần tử chỉ với vài dòng code.

Năm 2026, tất cả trình duyệt đều hỗ trợ Flexbox. Nếu cần ôn lại CSS cơ bản, hãy đọc CSS là gì?

Flex Container và Flex Items

Flexbox gồm 2 vai trò:

  • Flex Container (phần tử cha): Đặt display: flex
  • Flex Items (phần tử con): Các phần tử bên trong container
.container {
    display: flex; /* Chỉ cần dòng này để kích hoạt Flexbox! */
}

Thuộc tính của Container

flex-direction — Hướng sắp xếp

.container {
    display: flex;
    flex-direction: row;            /* Ngang (mặc định) */
    /* flex-direction: column; */   /* Dọc */
}

justify-content — Căn chỉnh trục chính

.container {
    display: flex;
    justify-content: flex-start;      /* Căn trái (mặc định) */
    /* justify-content: center; */    /* Căn giữa */
    /* justify-content: space-between; */ /* Cách đều, 2 đầu sát mép */
    /* justify-content: space-evenly; */ /* Cách đều hoàn toàn */
}

align-items — Căn chỉnh trục phụ

.container {
    display: flex;
    align-items: stretch;      /* Kéo giãn (mặc định) */
    /* align-items: center; */ /* Căn giữa theo chiều dọc */
}

flex-wrap — Xuống dòng

.container {
    display: flex;
    flex-wrap: wrap; /* Tự động xuống dòng khi tràn */
}

gap — Khoảng cách giữa items

.container {
    display: flex;
    gap: 16px; /* Khoảng cách đều giữa các item */
}

Thuộc tính của Item

.item {
    flex-grow: 1;        /* Tỷ lệ giãn ra */
    flex-shrink: 0;      /* Không co lại */
    flex-basis: 200px;   /* Kích thước cơ bản */
    align-self: center;  /* Căn chỉnh riêng */
    order: 2;            /* Thay đổi thứ tự hiển thị */
}

/* Viết tắt */
.item { flex: 1; }

5 ví dụ thực tế

1. Căn giữa hoàn hảo (dọc + ngang)

.center {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

2. Thanh navigation ngang

.navbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 20px;
    background-color: #333;
}
.navbar a { color: white; padding: 8px 16px; }

3. Sidebar + Nội dung chính

.layout { display: flex; gap: 20px; }
.sidebar { flex: 0 0 250px; }
.main-content { flex: 1; }

4. Grid thẻ bài viết

.card-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}
.card {
    flex: 1 1 300px;
    padding: 20px;
    border: 1px solid #ddd;
    border-radius: 8px;
}

5. Footer luôn ở đáy trang

body { display: flex; flex-direction: column; min-height: 100vh; }
main { flex: 1; }
footer { padding: 20px; background: #333; color: white; }

Câu hỏi thường gặp (FAQ)

Hỏi: Flexbox và CSS Grid khác nhau thế nào?

Trả lời: Flexbox dùng cho layout 1 chiều (hàng hoặc cột). Grid dùng cho layout 2 chiều (hàng và cột cùng lúc).

Hỏi: Flexbox có dùng cho responsive design được không?

Trả lời: Có. Kết hợp flex-wrapflex-basis để tạo layout tự động thích ứng.

Bước tiếp theo

  1. Ôn CSS cơ bảnCSS là gì?
  2. Ôn HTMLHTML là gì?

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete Web Developer Bootcamp

Học HTML, CSS, JavaScript, React, Node.js toàn diện.

4.7499.000 ₫
Xem khóa học →

CSS - The Complete Guide (incl. Flexbox, Grid & Sass)

CSS nâng cao: Flexbox, Grid, animations, responsive design.

4.6499.000 ₫
Xem khóa học →
Quảng cáo