CSS Flexbox

1
2
3
4
5
6
7
8

Thử ngay

Mô-đun布局 Flexbox CSS

Trước khi mô-đun布局 Flexbox (sản xuất) ra đời, các mô hình布局 có sẵn bao gồm bốn loại sau:

  • Khối (Block), dùng cho phần (phần) của trang web
  • Trong dòng (Inline), dùng cho văn bản
  • Bảng, dùng cho dữ liệu bảng hai chiều
  • Định vị, dùng để xác định vị trí cụ thể của phần tử

Mô-đun布局 Flexbox, có thể thiết kế cấu trúc布局 linh hoạt và响应 nhanh hơn mà không cần sử dụng nổi hoặc định vị.

Hỗ trợ trình duyệt

Tất cả các trình duyệt hiện đại đều hỗ trợ flexbox Thuộc tính.

29.0 11.0 22.0 10 48

Các yếu tố Flexbox

Nếu bạn muốn bắt đầu sử dụng mô hình Flexbox, bạn cần trước tiên định nghĩa khối Flex.

1
2
3

Các phần tử trên biểu thị một hộp flex chứa ba mục flex (vùng màu xanh lá cây).

Mô hình

Hộp flex chứa ba mục flex:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

Thử ngay

Phần tử cha (hộp):

Bằng cách đặt: display Thuộc tính được thiết lập thành: flexHộp flex sẽ co dãn:

1
2
3

Mô hình

.flex-container {
  display: flex;
}

Thử ngay

Dưới đây là các thuộc tính hộp flex:

Thuộc tính flex-direction

flex-direction Thuộc tính xác định hướng mà hộp sẽ d堆叠 các mục flex.

1
2
3

Mô hình

column Giá trị thiết lập d堆叠 các mục flex theo hướng dọc (từ trên xuống dưới):

.flex-container {
  display: flex;
  flex-direction: column;
}

Thử ngay

Mô hình

column-reverse Giá trị d堆叠 các mục flex theo hướng dọc (từ dưới lên trên):

.flex-container {
  display: flex;
  flex-direction: column-reverse;
}

Thử ngay

Mô hình

row Giá trị d堆叠 các mục flex theo hướng ngang (từ trái sang phải):

.flex-container {
  display: flex;
  flex-direction: row;
}

Thử ngay

Mô hình

row-reverse Giá trị d堆叠 các mục flex theo hướng ngang (từ phải sang trái):

.flex-container {
  display: flex;
  flex-direction: row-reverse;
}

Thử ngay

Thuộc tính flex-wrap

flex-wrap Thuộc tính quy định có nên cuộn các mục flex hay không.

Ví dụ dưới đây chứa 12 mục flex để minh họa thuộc tính flex-wrap một cách tốt hơn.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Mô hình

wrap Giá trị quy định rằng các mục flex sẽ cuộn khi cần thiết:

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

Thử ngay

Mô hình

nowrap Giá trị quy định rằng không cuộn các mục flex (mặc định):

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

Thử ngay

Mô hình

wrap-reverse Giá trị quy định rằng nếu cần, các mục flex sẽ cuộn theo thứ tự ngược lại:

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

Thử ngay

Thuộc tính flex-flow

flex-flow Thuộc tính này là một viết tắt để đồng thời thiết lập thuộc tính flex-direction và flex-wrap.

Mô hình

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

Thử ngay

Thuộc tính justify-content

justify-content Thuộc tính này được sử dụng để canh chỉnh các mục flex:

1
2
3

Mô hình

center Giá trị sẽ canh chỉnh các mục flex ở giữa hộp:

.flex-container {
  display: flex;
  justify-content: center;
}

Thử ngay

Mô hình

flex-start Giá trị sẽ canh chỉnh các mục flex ở đầu hộp (mặc định):

.flex-container {
  display: flex;
  justify-content: flex-start;
}

Thử ngay

Mô hình

flex-end Giá trị sẽ canh chỉnh các mục flex ở cuối hộp:

.flex-container {
  display: flex;
  justify-content: flex-end;
}

Thử ngay

Mô hình

space-around Giá trị hiển thị các mục flex trước, giữa và sau các hàng có khoảng cách:

.flex-container {
  display: flex;
  justify-content: space-around;
}

Thử ngay

Mô hình

space-between Giá trị hiển thị các mục flex giữa các hàng có khoảng cách:

.flex-container {
  display: flex;
  justify-content: space-between;
}

Thử ngay

Thuộc tính align-items

align-items Thuộc tính này được sử dụng để canh chỉnh theo chiều dọc các mục flex.

1
2
3

Trong những ví dụ này, chúng ta sử dụng hộp có chiều cao 200 pixel để演示 thuộc tính align-items một cách tốt hơn.

Mô hình

center giá trị đối齐 các mục flex ở giữa của container:

.flex-container {
  display: flex;
  height: 200px;
  align-items: center;
}

Thử ngay

Mô hình

flex-start giá trị đối齐 các mục flex ở đỉnh của container:

.flex-container {
  display: flex;
  height: 200px;
  align-items: flex-start;
}

Thử ngay

Mô hình

flex-end giá trị đối齐 các mục flex ở đáy của container:

.flex-container {
  display: flex;
  height: 200px;
  align-items: flex-end;
}

Thử ngay

Mô hình

stretch giá trị kéo dài các mục flex để lấp đầy容器 (mặc định):

.flex-container {
  display: flex;
  height: 200px;
  align-items: stretch;
}

Thử ngay

Mô hình

baseline giá trị làm các mục flex đối齐 theo đường cơ bản:

.flex-container {
  display: flex;
  height: 200px;
  align-items: baseline;
}

Thử ngay

Lưu ý:Ví dụ này sử dụng các font-size khác nhau để演示 các mục đã được đối齐 theo đường cơ bản của văn bản:


1
2
3
4

Thuộc tính align-content

align-content thuộc tính được sử dụng để đối齐 các đường flex.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Trong các ví dụ này, chúng ta sử dụng容器的 chiều cao 600 pixel và thiết lập thuộc tính flex-wrap thành wrap để演示 thuộc tính align-content tốt hơn.

Mô hình

space-between giá trị hiển thị các đường flex có khoảng cách bằng nhau giữa chúng:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: space-between;
}

Thử ngay

Mô hình

space-around giá trị hiển thị các đường flex trước, giữa và sau với khoảng trống:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: space-around;
}

Thử ngay

Mô hình

stretch giá trị kéo dài các đường flex để chiếm không gian còn lại (mặc định):

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: stretch;
}

Thử ngay

Mô hình

center giá trị hiển thị các đường flex ở giữa của容器:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: center;
}

Thử ngay

Mô hình

flex-start giá trị hiển thị các đường flex ở đầu của容器:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: flex-start;
}

Thử ngay

Mô hình

flex-end giá trị hiển thị các đường flex ở cuối của容器:

.flex-container {
  display: flex;
  height: 600px;
  flex-wrap: wrap;
  align-content: flex-end;
}

Thử ngay

Đặt chính xác

Trong ví dụ dưới đây, chúng ta sẽ giải quyết một vấn đề về phong cách phổ biến: Đặt chính xác.

Giải pháp: Đặt justify-contentalign-items thiết lập thuộc tính làm trung tâm, sau đó các mục flex sẽ được đặt chính xác ở giữa:

Mô hình

.flex-container {
  display: flex;
  height: 300px;
  justify-content: center;
  align-items: center;
}

Thử ngay

phần tử con (mục)

Các phần tử con của容器的 flex sẽ tự động trở thành các phần tử flex (elastique).

1
2
3
4

上面的元素代表一个灰色 flex 容器内的四个蓝色 flex 项目。

Mô hình

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div> 
  <div>4</div>
</div>

Thử ngay

用于弹性项目的属性有:

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

order 属性

order 属性规定 flex 项目的顺序。

1
2
3
4

代码中的首个 flex 项目不必在布局中显示为第一项。

order 值必须是数字,默认值是 0。

Mô hình

order 属性可以改变 flex 项目的顺序:

<div class="flex-container">
  <div style="order: 3">1</div>
  <div style="order: 2">2</div>
  <div style="order: 4">3</div> 
  <div style="order: 1">4</div>
</div>

Thử ngay

flex-grow 属性

flex-grow 属性规定某个 flex 项目相对于其余 flex 项目将增长多少。

1
2
3

该值必须是数字,默认值是 0。

Mô hình

使第三个弹性项目的增长速度比其他弹性项目快八倍:

<div class="flex-container">
  <div style="flex-grow: 1">1</div>
  <div style="flex-grow: 1">2</div>
  <div style="flex-grow: 8">3</div> 
</div>

Thử ngay

flex-shrink 属性

flex-shrink 属性规定某个 flex 项目相对于其余 flex 项目将收缩多少。

1
2
3
4
5
6
7
8
9

该值必须是数字,默认值是 0。

Mô hình

不要让第三个弹性项目收缩得与其他弹性项目一样多:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex-shrink: 0">3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
  <div>7</div>
  <div>8</div>
  <div>9</div>
  <div>10</div>
</div>

Thử ngay

flex-basis 属性

flex-basis 属性规定 flex 项目的初始长度。

1
2
3
4

Mô hình

将第三个弹性项目的初始长度设置为 200 像素:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex-basis: 200px">3</div>
  <div>4</div>
</div>

Thử ngay

flex 属性

flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。

Mô hình

使第三个弹性项目不可增长(0),不可收缩(0),且初始长度为 200 像素:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="flex: 0 0 200px">3</div>
  <div>4</div>
</div>

Thử ngay

align-self 属性

align-self 属性规定弹性容器内所选项目的对齐方式。

align-self Thuộc tính sẽ thay thế cách căn chỉnh mặc định được thiết lập bởi thuộc tính align-items của khung.

1
2
3
4

Trong các ví dụ này, chúng tôi sử dụng khung cao 200 pixel để演示 thuộc tính align-self tốt hơn:

Mô hình

Căn chỉnh phần弹性 thứ ba vào giữa khung:

<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div style="align-self: center">3</div>
  <div>4</div>
</div>

Thử ngay

Mô hình

Căn chỉnh phần弹性 thứ hai ở đỉnh trên của khung, căn chỉnh phần弹性 thứ ba ở đỉnh dưới của khung:

<div class="flex-container">
  <div>1</div>
  <div style="align-self: flex-start">2</div>
  <div style="align-self: flex-end">3</div>
  <div>4</div>
</div>

Thử ngay

Thư viện hình ảnh tương tác sử dụng Flexbox

Sử dụng Flexbox để tạo thư viện hình ảnh tương tác, thư viện này thay đổi giữa bốn hình ảnh, hai hình ảnh hoặc hình ảnh toàn màn hình dựa trên kích thước màn hình:

Thử ngay

Trang web tương tác sử dụng Flexbox

Sử dụng flexbox để tạo trang web tương tác, bao gồm thanh điều hướng và nội dung弹性:

Thử ngay

Thuộc tính CSS Flexbox

Bảng dưới đây liệt kê các thuộc tính CSS được sử dụng cùng với flexbox:

Thuộc tính Mô tả
display Định nghĩa loại hộp cho các phần tử HTML.
flex-direction Định nghĩa hướng của các phần弹性 trong khung弹性.
justify-content Căn chỉnh các phần弹性 theo chiều ngang khi các phần弹性 không sử dụng hết không gian khả dụng trên trục chính.
align-items Căn chỉnh các phần弹性 theo chiều dọc khi các phần弹性 không sử dụng hết không gian khả dụng trên trục chính.
flex-wrap Định nghĩa liệu các phần弹性 có nên chuyển hàng nếu một đường flex không có đủ không gian để chứa chúng hay không.
align-content Thay đổi hành vi của thuộc tính flex-wrap. Tương tự như align-items, nhưng không căn chỉnh các phần弹性 mà chỉ căn chỉnh đường flex.
flex-flow Thuộc tính viết tắt của flex-direction và flex-wrap.
order Định nghĩa thứ tự của các phần弹性 so với các phần弹性 khác trong cùng khung.
align-self Dùng cho các phần弹性。Bao gồm thuộc tính align-items của khung.
flex Thuộc tính viết tắt của flex-grow, flex-shrink và flex-basis.