Khởi động flex css

Flexbox được sinh ra được coi là cuộc cách mạng của CSS3, vì thế, nếu bạn học lập trình web thì không thể không giữ nó


Khởi động flex css

Hộp linh hoạt

Bài viết này mình sẽ hướng dẫn đầy đủ về Flexbox, các khái niệm, thuật ngữ, các thuộc tính cũng như ví dụ về cách sử dụng flexbox

lục mục

1. Giới thiệu về Flexbox

2. Khái niệm và thuật ngữ cơ bản của Flexbox

3. Các thuộc tính của flexbox

3. 1. Thuộc tính hiển thị
3. 2. Thuộc tính flex-direction
3. 3. Thuộc tính flex-wrap
3. 4. Thuộc tính flex-flow
3. 5. Thuộc tính justify-content
3. 6. Thuộc tính align-item
3. 7. Thuộc tính align-content
3. 8. Thuộc tính thứ tự
3. 9. Thuộc tính flex-grow
3. 10. Thuộc tính flex-shrink
3. 11. Thuộc tính linh hoạt
3. 12. Thuộc tính flex
3. 13. Thuộc tính align-self

4. Ví dụ sử dụng flexbox

Ví dụ 1. Căn giữa hoàn hảo với Flexbox
Ví dụ 2. Responsive with flexbox
Ví dụ 3. Responsive menu with flexbox
Ví dụ 4. Trang web đáp ứng đơn giản với flexbox


Tổng kết


> Lưu ý. Trong bài viết này sẽ có các ví dụ được nhúng từ Codepen. io. Do đó, để xem được mã, bạn cần mở tab khác và vào trang Codepen. io (vượt captcha) và F5 lại bài viết này

1. Giới thiệu về Flexbox

Flexbox Layout Module (Hộp linh hoạt) (Theo khuyến nghị của W3C kể từ tháng 10 năm 2017) Mục đích mục tiêu cung cấp một cách bố trí, sắp xếp và phân phối mục và không gian hiệu quả hơn trong một vùng chứa, ngay cả khi kích thước

Ý tưởng chính đằng sau bố cục flex là cung cấp cho vùng chứa khả năng thay đổi chiều rộng / chiều cao (và thứ tự) của mục để lấp đầy khoảng trống không có sẵn (chủ yếu là để phù hợp với tất cả các loại thiết bị hiển thị

Một hộp chứa linh hoạt mở rộng các mục để lấp đầy khoảng trống không có sẵn hoặc thu nhỏ chúng để tránh bị tràn ra bên ngoài

Quan trọng nhất, bố cục flexbox có hướng trái ngược với bố cục thông thường

Mặc dù các bố cục thông thường vẫn hoạt động tốt cho các trang, nhưng chúng thiếu tính linh hoạt để hỗ trợ các ứng dụng lớn hoặc phức tạp (đặc biệt là khi thay đổi hướng, thay đổi kích thước, kéo dài, . v. )

Lưu ý. Bố cục Flexbox phù hợp nhất với các thành phần nhỏ của ứng dụng, trong khi bố trí GRID được dành cho tỷ lệ lớn hơn của bố cục cục bộ

2. Khái niệm và thuật ngữ cơ bản của Flexbox

Vì flexbox là một mô-đun, không phải là một thuộc tính duy nhất, nó liên quan đến rất nhiều thứ bao gồm cả một bộ thuộc tính của nó

Một số trong số chúng được thiết lập trên thùng chứa (container) (phần tử cha, được gọi là 'flex container') trong khi những cái khác được đặt là phần tử con (nói là 'flex item')

Nếu bố cục cục bộ 'thông thường' dựa trên cả hai hướng theo khối và hướng tuyến nội tuyến, thì bố cục cục bộ flex dựa trên 'hướng dòng chảy' (hướng dòng chảy linh hoạt)

Và bạn có thể định hướng dòng chảy. If not rule, it is default

Xem hình minh họa sau


Khởi động flex css

Các khái niệm, thuật ngữ cơ bản của Flexbox
 


Các mục sẽ được bố trí theo trục chính (trục chính) (từ điểm bắt đầu chính đến điểm kết thúc chính) hoặc góc góc với trục chính - trục chéo (từ điểm bắt đầu chéo đến điểm kết thúc chéo)
  • trục chính - Trục chính của bộ chứa flex là trục chính dọc, theo đó các mục flex được đặt ra. Lưu ý, nó không nhất thiết phải nằm ngang. Nó được quy định dựa trên thuộc tính flex-direction (xem bên dưới)

  • bắt đầu chính và kết thúc chính. Mục flex được đặt trong vùng chứa bắt đầu từ main-start và đến main-end

  • kích thước chính - chiều rộng của vùng chứa

  • trục chéo - Trục góc với trục chính được gọi là trục chéo. Hướng của nó phụ thuộc vào hướng chính

  • cross start and cross end - Điểm bắt đầu và điểm kết thúc của flex item theo hướng cross axis

  • kích thước chéo - Phụ thuộc vào chiều rộng hoặc chiều cao của mục flex

Ngoài ra, bạn có thể nắm giữ các khái niệm cơ bản về Flexbox thông qua một trò chơi rất thú vị, đó chính là Flexbox Froggy. Cách chơi đơn giản là đặt những con ếch trên đúng lá sen

Chơi thử Game Flexbox Froggy - Học Flexbox qua Game (Có phiên bản tiếng Việt)

Ngoài ra còn có Game Flexbox Defense mang tính thử thách cực thú vị cho các bạn vừa chơi vừa rèn luyện

Về cơ bản thì 90% trường hợp chúng ta cũng sẽ chỉ sử dụng những thuộc tính flexbox được học trong 2 game này

Còn bài viết này thì như một tài liệu tham khảo về hầu hết thuộc tính của Flexbox

> Ghi chú. Tất cả các kỹ thuật Front-end và Back-end sẽ được truyền đạt đầy đủ trong KHÓA HỌC PHP FULL STACK hoặc KHÓA HỌC JAVA FULL STACK. Tham gia ngay nếu bạn muốn học nhanh, đi thực tập, đi làm sớm

3. Các thuộc tính của flexbox

Chúng ta sẽ đi tìm hiểu về từng thuộc tính của Flexbox ngay sau đây

Trước hết chúng ta sẽ tìm hiểu về các thuộc tính dành cho container


Khởi động flex css

Thuộc tính dành cho hộp chứa flexbox

3. 1. Thuộc tính hiển thị

Thuộc tính hiển thị được sử dụng để định nghĩa một thùng chứa linh hoạt. Nội tuyến (inline) hoặc khối (block) tùy thuộc vào định giá cao nhất

Nó cho phép tạo ra một flex context để tiếp tục sắp xếp các flex item

Lưu ý rằng các cột CSS không có tác dụng đối với flex container

3. 2. Thuộc tính flex-direction

Thuộc tính flex-direction thiết lập trục chính (main-axis), do đó xác định hướng các mục flex sẽ được đặt trong flex container


Khởi động flex css

Thuộc tính flex-direction

Flexbox là một khái niệm định hướng cục bộ. Hãy hiểu rằng các mục flex sẽ chỉ được đặt theo các hàng ngang hoặc cột dọc

hướng uốn. hàng ngang. đảo ngược hàng. cột. đảo ngược cột;

in which

  • hàng ngang. default. Từ trái sang phải
  • đảo ngược hàng. Đảo ngược hàng (Từ phải sang trái)
  • cột. Cột (Từ trên xuống dưới)
  • đảo ngược cột. Đảo ngược cột (Từ dưới lên trên)

3. 3. Thuộc tính flex-wrap

Theo mặc định, tất cả các mục linh hoạt sẽ cố gắng khớp với một dòng. Bạn có thể thay đổi điều đó và cho phép các mục xuống hàng (tách hàng) khi cần thiết với thuộc tính flex-wrap này


Khởi động flex css

Thuộc tính flex-wrap

uốn dẻo. bây giờ. bọc. quấn ngược;

in which

  • nowrap (default). all flex item will be set on a line
  • bọc. mục flex sẽ tự động tách dòng, từ trên xuống dưới
  • bọc ngược. mục flex sẽ tách thành nhiều dòng từ dưới lên trên

Như trong ví dụ bên dưới đây

  • List color red được thiết lập để hiện thị
  • Danh sách màu vàng được thiết lập để bọc
  • Danh sách màu vàng được thiết lập để ngắt dòng ngược

Chú thích. flex-direction is setting default value. hàng ngang

Xem hộp uốn cong của bút. Demo thuộc tính flex-wrap của NIIT -ICT Hà Nội (@niiticthanoi) trên CodePen


Bản demo thuộc tính flex-wrap của Flexbox

3. 4. Thuộc tính flex-flow

Thuộc tính flex-flow là một cách viết tắt cho các thuộc tính flex-direction và flex-wrap

Nó cùng xác định main axis and cross axis of flex container. default value is row nowrap

dòng chảy linh hoạt. hướng uốn;

hoặc

3. 5. Thuộc tính justify-content

Thuộc tính justify-content verify the vertical connection by main

Nó giúp điều chỉnh phần không gian trống còn lại khi tất cả các mục linh hoạt cùng được đặt trên một dòng


Khởi động flex css

Thuộc tính justify-content
 


Nó cũng thực hiện một số kiểm soát đối với các liên kết của các mục khi chúng tràn qua dòng

không gian xung quanh. không gian đều

in which

  • flex-start (default). Các mục được đặt về phía bắt đầu (theo hướng của flex-direction)
  • kết thúc uốn cong. các mặt hàng bị lệch về phía cuối của flex-direction
  • bắt đầu. các mục được đặt ở phía bắt đầu của hướng wirting-mode
  • chấm dứt. các mục được đặt ở phía cuối của hướng wirting-mode
  • trái. các mục được đặt ở phía bên trái, cạnh của vùng chứa
  • đúng. các mục được đặt ở phía bên phải, cạnh của vùng chứa
  • trung tâm. set default item into between
  • không gian giữa. các mục được đặt cách đều nhau, mục đầu và cuối được đặt tại điểm bắt đầu và kết thúc
  • không gian xung quanh. Khoảng cách giữa các mục đều nhau. Nhưng, item đầu tiên và cuối cùng có khoảng cách so với container chỉ bằng 1 nửa so với khoảng cách giữa các item với nhau
  • không gian đều. Khoảng cách giữa các item và container là đều nhau

Lưu ý rằng các trình duyệt khác nhau sẽ hỗ trợ nhau

Ví dụ, space-between không bao giờ được hỗ trợ từ một phiên bản của Edge và start / end / left / right không có trên Chrome (Chi tiết xem tại MDN)

An toàn nhất là các giá trị. flex-start, flex-end và center

Ngoài ra còn có hai từ khóa bổ sung mà bạn có thể ghép nối với các giá trị này. an toàn và không an toàn

3. 6. Thuộc tính align-item

Khởi động flex css

Thuộc tính align-items xác định hành vi mặc định cho cách các mục flex được đặt dọc theo trục chéo trên dòng hiện tại

Hãy hiểu nó như là phiên bản justify-content nhưng dành cho trục chéo (vuông góc với trục chính)

  • kéo dài (default). kéo dài mục để lấp đầy vùng chứa ( tôn trọng chiều rộng tối thiểu / chiều rộng tối đa)
  • khởi động linh hoạt / khởi động / tự khởi động. các mục được đặt ở đầu trục chéo. Sự khác biệt giữa những điều này là về việc tôn trọng các quy tắc hướng linh hoạt hoặc chế độ viết quy tắc
  • flex-end / kết thúc / tự kết thúc. các mục được đặt ở cuối trục chéo. Sự khác biệt một lần nữa là về việc tôn trọng các quy tắc hướng linh hoạt hoặc chế độ viết quy tắc
  • trung tâm. các mục được căn giữa trong trục chéo
  • đường cơ sở. item are fixed as the base of the base of our

Các từ khóa an toàn và không an toàn có thể được sử dụng tương tự với tất cả các từ khóa còn lại (mặc dù có một số trình duyệt cần lưu ý)

3. 7. Thuộc tính align-content

Nếu như thuộc tính justify-content phân phối khoảng trống giữa các mục trên trục chính thì

Khởi động flex css

Thuộc tính align-content

Thuộc tính align-content phân phối khoảng trống giữa các hàng, hàng với cạnh container (theo trục chéo)

khởi động linh hoạt. kết thúc uốn cong. trung tâm

không gian giữa. không gian xung quanh. không gian đều

đường cơ sở. đường cơ sở đầu tiên. đường cơ sở cuối cùng

in which

  • flex-khởi động/khởi động. các hàng được đặt vào vùng chứa đầu tiên (theo trục ngang của trục). flex-start (được hỗ trợ nhiều hơn) Tôn trọng flex-direction khi khởi động Tôn trọng viết-mode
  • flex-end / kết thúc. item hàng được đặt ở cuối container (theo trục chéo). Kết thúc flex (hỗ trợ nhiều hơn) Tôn vinh hướng flex khi kết thúc Tôn vinh hướng chế độ viết
  • trung tâm. các hàng item nằm giữa vùng chứa
  • không gian giữa. các hàng phân bố đều. Dòng đầu tiên ở vùng chứa đầu tiên trong khi dòng cuối cùng ở vùng chứa cuối cùng
  • không gian xung quanh. các hàng mục được phân bổ đều với không gian bằng nhau xung quanh mỗi dòng. (Mục đầu và mục cuối vẫn có khoảng cách tối thiểu với cạnh vùng chứa)
  • không gian đều. các hàng hóa được phân bố đều với không gian bằng nhau xung quanh chúng. (all with Near container)
  • Kéo dài (default). Các mục hàng được kéo mở rộng để lấp đầy khoảng trống (theo trục chéo)

Tiếp theo chúng ta sẽ tìm hiểu về cách thuộc tính dành cho flex item

Khởi động flex css

Các thuộc tính dành cho mục linh hoạt

3. 8. Thuộc tính thứ tự

Khởi động flex css

Thuộc tính thứ tự
 


Theo mặc định, các mục linh hoạt được đặt theo thứ tự sắp xếp trong HTML. Tuy nhiên, thuộc tính đơn đặt hàng có thể kiểm tra thứ tự xuất hiện của chúng trong thùng chứa linh hoạt

3. 9. Thuộc tính flex-grow

Khởi động flex css

Thuộc tính flex-grow

Thuộc tính flex-grow phân phối bổ sung khoảng không gian cho các mục nếu cần thiết

Nó chấp nhận một giá trị đơn vị như một tỷ lệ. Nó chỉ ra lượng không gian có sẵn bên trong flex container mà item sẽ chiếm

Nếu tất cả các mục có flex-grow được đặt thành 1, thì các mục sẽ chiếm mỗi mục 1 phần của vùng chứa

Nếu một trong những mặt hàng có giá trị là 2, thì mặt hàng này sẽ được chia thành 2 phần và các mặt hàng khác sẽ được chia cho mỗi 1 mặt hàng một phần của thùng chứa

Number of sound is invalid

3. 10. Thuộc tính flex-shrink


Thuộc tính flex-shrink sử dụng để co lại mục nếu cần thiết

 

Number of sound is invalid

3. 11. Thuộc tính linh hoạt

Thuộc tính flex-basis xác định kích thước mặc định của một phần tử trước khi không còn thời gian phân phối lại

It could be long length (ví dụ. 20%, 5rem, v. v. ) hoặc một từ khóa

  • Từ khóa auto có nghĩa là 'đối chiếu vào thuộc tính chiều rộng hoặc chiều cao' (tạm thời được thực hiện bởi từ khóa kích thước chính cho đến khi không sử dụng nữa)
  • Từ khóa nội dung có nghĩa là 'kích thước dựa trên nội dung của mặt hàng - từ khóa này chưa được hỗ trợ tốt, vì vậy thật khó để kiểm tra và khó hơn để biết nội dung tối đa, nội dung tối thiểu và nội dung phù hợp của nó

cơ sở linh hoạt.   . tự động;

Nếu thiết lập đến 0, thêm không gian xung quanh nội dung không phải là phần tử. If setting to auto, more not time is being partition based on flex-grow. Xem này, đồ họa

3. 12. Thuộc tính linh hoạt

Thuộc tính flex được viết tắt để kết hợp các thuộc tính flex-grow, flex-shrink và flex-basis

Tham số thứ 2 và thứ 3 (flex-shrink và flex-basis) là tùy chọn. Default is 0 1 auto

    flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'>]

Bạn nên sử dụng các thuộc tính tốc ký này vì phải thiết lập các thuộc tính riêng lẻ. Ký hiệu tốc độ giúp thiết lập các giá trị khác một cách thông minh hơn

3. 13. Thuộc tính align-self

Khởi động flex css

Thuộc tính align-self

Thuộc tính align-self tương tự như align-item nhưng chỉ định cho một mục riêng

Vui lòng xem giải thích align-items để hiểu được giá trị của nó

* Lưu ý rằng float, clear và vertical-align không ảnh hưởng đến một mục flex

4. Ví dụ sử dụng flexbox

Ví dụ 1. Căn giữa hoàn hảo với Flexbox

Hãy bắt đầu với một ví dụ rất đơn giản, giải quyết gần như hàng ngày chủ đề. Căn giữa hoàn hảo

Không có cách nào đơn giản hơn là sử dụng flexbox

CSS

/* Thiết lập bối cảnh flex */

/* Hoặc kích thước khác */

/* Hoặc kích thước khác */

/* Hoặc kích thước khác */

Ví dụ Codepen

Xem hộp uốn cong của bút. Căn giữa hoàn hảo bởi NIIT -ICT Hà Nội (@niiticthanoi) trên CodePen

Ví dụ về căn giữa hoàn hảo với flexbox

Ví dụ 2. Responsive với flexbox

Bây giờ hãy sử dụng một số thuộc tính khác. Hãy xem xét một danh sách bao gồm 6 mục, tất cả đều có kích thước xác định, nhưng có thể có kích thước tự động

CSS

/* Đầu tiên, tạo ra bối cảnh flex */

/* Sau đó xác định hướng dòng chảy flex-direction

Please nhớ rằng đây là tương tự

/* Sau đó chúng ta phân phối không gian còn lại cho đều nhau */

biện minh cho nội dung. không gian xung quanh;

Chúng ta muốn chúng được phân bổ đều trên trục ngang để khi chúng ta thay đổi kích thước trình duyệt, mọi thứ đều có tỷ lệ độc lập mà không cần @media

ví dụ codepen

 

Xem hộp uốn cong của bút. Responsive with Flexbox by NIIT -ICT Hà Nội (@niiticthanoi) trên CodePen


Ví dụ về Responsive với flexbox

Ví dụ 2. Responsive menu với flexbox

Hãy tưởng tượng chúng ta có một menu căn bản phải ở trên cùng trang web của chúng ta

Nhưng chúng tôi muốn nó được căn cứ vào giữa nếu màn hình trung bình và xếp hạng thành cột đơn trên các thiết bị nhỏ. Too easy with flexbox

CSS

/* Căn chỉnh mục về cuối theo trục chính */

biện minh cho nội dung. kết thúc uốn cong;

/* Màn hình trung bình */

@media tất cả và (độ rộng tối đa. 800px) {

/* vào Căn chỉnh mục tập trung lưu theo kiểu xung quanh */

biện minh cho nội dung. không gian xung quanh;

@media tất cả và (độ rộng tối đa. 500px) {

/* Mỗi một mục nằm trên một hàng (sắp xếp thành 1 cột duy nhất) */

Xem kết quả trong ví dụ codepen sau

Xem hộp uốn cong của bút. Responsive menu với Flexbox by NIIT -ICT Hà Nội (@niiticthanoi) trên CodePen

Ví dụ responsive menu với flexbox

Ví dụ 3. Trang web đáp ứng đơn giản với flexbox

Mục đích cuối cùng của việc sử dụng flexbox là hỗ trợ tốt cho thiết kế website responsive. Vì vậy, bây giờ hãy thử thiết kế một trang web cục bộ đáp ứng đơn giản với flexbox nhé

CSS

/* Những ta dựa vào thứ tự nguồn cho phương pháp mobile-first

/* Màn hình trung bình */

@media tất cả và (độ rộng tối thiểu. 600px) {

/* Thanh bên nằm trên cùng một hàng */

@media tất cả và (độ rộng tối thiểu. 800px) {

/* Những ta đảo ngược thứ tự của thanh bên đầu tiên và chính

* và nói rằng chính có chiều rộng gấp đôi thanh bên

Please view in ví dụ codepen bên dưới

Xem hộp uốn cong của bút. Ví dụ responsive website đơn giản của NIIT -ICT Hà Nội (@niiticthanoi) trên CodePen


Ví dụ responsive website đơn giản với flexbox


 

Tổng kết Flexbox

Như vậy là qua bài viết này, bạn đã hiểu rõ hơn về Flexbox, các khái niệm quan trọng cũng như các thuộc tính của flexbox

Hơn nữa, chúng ta còn thử nghiệm với 4 ví dụ đơn giản về ứng dụng của flexbox

Nắm kỹ năng sử dụng flexbox thì mức thiết kế web cũng như lập trình web của bạn sẽ nâng cao hơn rất nhiều, dễ thở hơn

>  Tham khảo. Học FRONT END chuyên nghiệp với React

Chúc bạn học lập trình vui vẻ

---

HỌC VIỆN ĐẠO TẠO CNTT NIIT - ICT HÀ NỘI

Học lập trình chất lượng cao (Từ năm 2002). Học thực tế + Tuyển dụng ngay

Đc. Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT. 02435574074 - 0383. 180086

E-mail. xin chào@niithanoi. giáo dục. vn

trang chủ. https. //Facebook. com/NIIT. CNTT-TT/

#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php