Các thuộc tính trong css và giải thích

Published on March 31, 2025

csshtml

View: 110

Tất Cả Những Điều Cần Biết Về flex Trong CSS

1. Flexbox Là Gì?

Flexbox (Flexible Box Layout) là một mô hình layout trong CSS giúp sắp xếp, căn chỉnh và phân phối không gian giữa các phần tử trong container một cách linh hoạt, ngay cả khi kích thước của chúng không cố định.


2. Cấu Trúc Của Flexbox

Flexbox bao gồm hai thành phần chính:

  • Flex container: Phần tử cha có thuộc tính display: flex;

  • Flex items: Các phần tử con bên trong flex container.

Ví dụ:

.container {
  display: flex;
}

3. Các Thuộc Tính Quan Trọng Trong Flexbox

3.1. Thuộc Tính Của Flex Container

Thuộc tính

Mô tả

display: flex;

Kích hoạt flexbox cho phần tử cha.

flex-direction

Xác định hướng sắp xếp của flex items.

flex-wrap

Quyết định có cho phép xuống dòng khi hết chỗ hay không.

justify-content

Căn chỉnh flex items theo trục chính (main axis).

align-items

Căn chỉnh flex items theo trục phụ (cross axis).

align-content

Căn chỉnh khi có nhiều dòng flex items.

➡ 3.1.1. flex-direction

Xác định hướng sắp xếp các items:

.container {
  display: flex;
  flex-direction: row; /* row | row-reverse | column | column-reverse */
}
  • row (mặc định): Các items xếp theo chiều ngang.

  • row-reverse: Ngược lại với row.

  • column: Các items xếp theo chiều dọc.

  • column-reverse: Ngược lại với column.

➡ 3.1.2. flex-wrap

Xác định có cho phép các items xuống dòng không:

.container {
  flex-wrap: nowrap; /* nowrap | wrap | wrap-reverse */
}
  • nowrap (mặc định): Không xuống dòng.

  • wrap: Xuống dòng khi không đủ chỗ.

  • wrap-reverse: Xuống dòng nhưng đảo ngược thứ tự.

➡ 3.1.3. justify-content

Căn chỉnh các flex items theo trục chính:

.container {
  justify-content: flex-start; /* flex-start | flex-end | center | space-between | space-around | space-evenly */
}
  • flex-start (mặc định): Căn trái.

  • flex-end: Căn phải.

  • center: Căn giữa.

  • space-between: Khoảng cách đều giữa các items.

  • space-around: Khoảng cách đều với lề 2 bên.

  • space-evenly: Khoảng cách đều nhau.

➡ 3.1.4. align-items

Căn chỉnh theo trục phụ:

.container {
  align-items: stretch; /* stretch | flex-start | flex-end | center | baseline */
}
  • stretch (mặc định): Items kéo dài toàn bộ container.

  • flex-start: Căn trên.

  • flex-end: Căn dưới.

  • center: Căn giữa.

  • baseline: Căn theo đường cơ sở của chữ.

➡ 3.1.5. align-content

Dùng khi có nhiều dòng flex items:

.container {
  align-content: stretch; /* stretch | flex-start | flex-end | center | space-between | space-around */
}

3.2. Thuộc Tính Của Flex Items

Thuộc tính

Mô tả

order

Xác định thứ tự hiển thị của item.

flex-grow

Xác định mức độ mở rộng của item.

flex-shrink

Xác định mức độ thu nhỏ của item.

flex-basis

Xác định kích thước ban đầu của item.

align-self

Ghi đè align-items trên một item cụ thể.

➡ 3.2.1. order

Xác định thứ tự xuất hiện của flex items:

.item {
  order: 2; /* Giá trị mặc định là 0, số nhỏ hơn hiển thị trước */
}
➡ 3.2.2. flex-grow

Xác định mức độ mở rộng khi còn không gian trống:

.item {
  flex-grow: 1; /* Giá trị mặc định là 0 */
}

Nếu tất cả items có flex-grow: 1, chúng sẽ mở rộng đều nhau.

➡ 3.2.3. flex-shrink

Xác định mức độ thu nhỏ khi không gian bị giới hạn:

.item {
  flex-shrink: 1; /* Giá trị mặc định là 1 */
}

Nếu flex-shrink: 0, item sẽ không bị thu nhỏ.

➡ 3.2.4. flex-basis

Xác định kích thước ban đầu của item:

.item {
  flex-basis: 100px; /* Giá trị mặc định là auto */
}

Có thể sử dụng cùng với flex-growflex-shrink.

➡ 3.2.5. align-self

Ghi đè align-items trên một item cụ thể:

.item {
  align-self: center; /* auto | flex-start | flex-end | center | baseline | stretch */
}

4. Kết Hợp flex-grow, flex-shrink, flex-basis

Có thể viết gọn ba thuộc tính trên thành flex:

.item {
  flex: 1 1 100px; /* flex-grow flex-shrink flex-basis */
}

Ví dụ:

.item {
  flex: 1; /* Tương đương flex: 1 1 0% */
}

5. Ví Dụ Minh Họa

Ví dụ 1: Căn giữa nội dung

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

Ví dụ 2: Chia cột với flex

.container {
  display: flex;
}

.item {
  flex: 1;
  padding: 10px;
  border: 1px solid #000;
}

HTML:

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>

6. Khi Nào Nên Dùng Flexbox?

  • Khi cần căn chỉnh và phân phối không gian linh hoạt.

  • Khi làm layout một chiều (hàng hoặc cột).

  • Khi cần căn giữa phần tử dễ dàng.

Nếu layout phức tạp nhiều chiều, có thể cân nhắc dùng CSS Grid.


7. Tóm Tắt

display: flex; – Kích hoạt flexbox
flex-direction – Hướng của flex items
justify-content – Căn chỉnh theo trục chính
align-items – Căn chỉnh theo trục phụ
flex-grow, flex-shrink, flex-basis – Điều chỉnh kích thước item

💡 Mẹo:

  • Dùng gap để tạo khoảng cách giữa các items thay vì margin.

  • Kết hợp flex-wrapjustify-content để làm layout responsive.

📌 Bảng Tổng Hợp CSS Liên Quan Đến Flexbox

CSS

Tailwind

Giải Thích

display: flex;

flex

Biến phần tử thành một flex container.

display: inline-flex;

inline-flex

Tương tự flex, nhưng container là inline.

flex-direction: row;

flex-row

Xếp items theo chiều ngang (mặc định).

flex-direction: row-reverse;

flex-row-reverse

Xếp items theo chiều ngang nhưng đảo ngược.

flex-direction: column;

flex-col

Xếp items theo chiều dọc.

flex-direction: column-reverse;

flex-col-reverse

Xếp items theo chiều dọc nhưng đảo ngược.

flex-wrap: nowrap;

flex-nowrap

Không cho phép items xuống dòng (mặc định).

flex-wrap: wrap;

flex-wrap

Cho phép items xuống dòng khi hết chỗ.

flex-wrap: wrap-reverse;

flex-wrap-reverse

Xuống dòng nhưng đảo ngược thứ tự.

justify-content: flex-start;

justify-start

Căn trái (mặc định).

justify-content: flex-end;

justify-end

Căn phải.

justify-content: center;

justify-center

Căn giữa theo trục chính.

justify-content: space-between;

justify-between

Khoảng cách giữa các items, không có padding hai bên.

justify-content: space-around;

justify-around

Khoảng cách giữa các items có padding hai bên.

justify-content: space-evenly;

justify-evenly

Khoảng cách giữa các items đều nhau.

align-items: flex-start;

items-start

Căn trên theo trục phụ.

align-items: flex-end;

items-end

Căn dưới theo trục phụ.

align-items: center;

items-center

Căn giữa theo trục phụ.

align-items: baseline;

items-baseline

Căn theo đường cơ sở chữ.

align-items: stretch;

items-stretch

Mở rộng items để lấp đầy container (mặc định).

align-content: flex-start;

content-start

Căn trên khi có nhiều hàng.

align-content: flex-end;

content-end

Căn dưới khi có nhiều hàng.

align-content: center;

content-center

Căn giữa khi có nhiều hàng.

align-content: space-between;

content-between

Khoảng cách giữa các hàng.

align-content: space-around;

content-around

Khoảng cách giữa các hàng có padding hai bên.

align-content: stretch;

content-stretch

Mở rộng các hàng để lấp đầy container.

gap: 1rem;

gap-4

Khoảng cách giữa các flex items.

row-gap: 1rem;

row-gap-4

Khoảng cách giữa các hàng.

column-gap: 1rem;

col-gap-4

Khoảng cách giữa các cột.

order: 1;

order-1

Xác định thứ tự của flex item.

flex-grow: 1;

flex-grow

Cho phép item mở rộng để chiếm không gian trống.

flex-shrink: 1;

flex-shrink

Cho phép item thu nhỏ khi không đủ chỗ.

flex-basis: 100px;

basis-24

Định nghĩa kích thước ban đầu của flex item.

flex: 1 1 0%;

flex-1

Viết tắt của flex-grow: 1; flex-shrink: 1; flex-basis: 0%;.

align-self: flex-start;

self-start

Căn chỉnh item riêng biệt theo trục phụ.

align-self: flex-end;

self-end

Căn chỉnh item ở cuối theo trục phụ.

align-self: center;

self-center

Căn giữa item theo trục phụ.

align-self: stretch;

self-stretch

Item mở rộng hết trục phụ.


🔥 Mẹo Sử Dụng Flexbox Hiệu Quả

  • Dùng gap-x-4gap-y-4 thay vì margin để dễ quản lý khoảng cách giữa các phần tử.

  • flex-1 giúp các items tự động chia đều không gian.

  • Kết hợp justify-center items-center để căn giữa nội dung nhanh chóng.

Related Articles

How to Improve Your Blog Design

Learn tips and tricks to enhance your blog's appearance and usability.

Top Blogging Tools in 2024

Discover the best tools to elevate your blogging experience.

Writing Content that Converts

Learn the art of creating engaging and effective blog content.

Ôn tập là dễ

Ôn tập là dễ

Nền tảng thi trắc nghiệm số 1 Việt Nam giúp bạn tạo, quản lý và chia sẻ bộ đề một cách nhanh chóng và dễ dàng.

© 2025 Ôn tập là dễ. Tất cả các quyền được bảo lưu.