Đăng nhập

Bài 15: Flexbox nâng cao – căn giữa, khoảng cách, và wrap nhiều dòng

Sau khi bạn đã nắm được trục chính và trục phụ trong Flexbox, bài này sẽ giúp bạn đi xa hơn:

  • Cách căn giữa hoàn toàn cả chiều ngang lẫn chiều dọc
  • Làm các phần tử giãn đều hoặc co lại tùy không gian
  • Sử dụng wrap để chia hàng xuống dòng
  • Làm quen với gap – thuộc tính tạo khoảng cách rất tiện lợi

1. Căn giữa toàn bộ cả chiều ngang và chiều dọc

Bạn có thể căn giữa hoàn toàn một phần tử bằng cách:

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
  • justify-content: giữa trục chính (mặc định ngang)
  • align-items: giữa trục phụ (mặc định dọc)

Lưu ý: Container phải có chiều cao cụ thể để có thể căn giữa dọc.


2. Làm các phần tử co giãn bằng flex-grow, flex-shrink, flex-basis

.item {
  flex: 1;
}

Tương đương với:

.item {
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: 0;
}

→ Cho phép các phần tử chia đều không gian còn lại

Ví dụ:

.item1 {
  flex: 2;
}
.item2 {
  flex: 1;
}

item1 sẽ rộng gấp đôi item2.


3. Wrap – chia nhiều dòng

Mặc định Flexbox sẽ dồn tất cả phần tử vào một dòng, tràn cả container.

Bạn có thể cho nó tự động xuống hàng bằng flex-wrap:

.container {
  display: flex;
  flex-wrap: wrap;
}

→ Mỗi khi phần tử không đủ chỗ, nó sẽ tự xuống dòng.


4. Sử dụng gap – cách mới để tạo khoảng cách giữa phần tử

.container {
  display: flex;
  gap: 20px;
}
  • gap: tạo khoảng cách giữa các item trong Flexbox (hoặc Grid)
  • Hữu ích hơn marginkhông cần xử lý item đầu/cuối

5. Thực hành

style.css

.container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  background: #e3f2fd;
  padding: 20px;
}

.item {
  flex: 1 1 200px; /* grow – shrink – basis */
  background: #64b5f6;
  color: white;
  padding: 30px;
  text-align: center;
  border-radius: 6px;
}

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Bài 15 – Flexbox nâng cao</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <div class="container">
    <div class="item">Box 1</div>
    <div class="item">Box 2</div>
    <div class="item">Box 3</div>
    <div class="item">Box 4</div>
    <div class="item">Box 5</div>
  </div>

</body>
</html>

6. Ghi nhớ

Thuộc tínhÝ nghĩa
flex-wrapCho phép các item xuống dòng nếu không đủ chỗ
flex: 1Item sẽ co giãn đều nhau
gapTạo khoảng cách giữa các item mà không cần margin
justify-content, align-itemsCăn giữa, giãn đều theo trục chính và phụ

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.

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