Ở những bài học trước, Quantrimang. com đã hướng dẫn bạn cách thiết kế bố cục trang web bằng cách sử dụng thuộc tính float, kỹ thuật xóa float hay đặt các vị trí lồng nhau. Tuy nhiên phương pháp này thường phải viết khá nhiều code CSS và kết quả thì thực sự là khó đoán trước, có thể như ý bạn, cũng có thể cực kỳ… tệ Show Nhưng thật may rủi, Flexbox Layout đã ra đời để cải thiện những nhược điểm này. Với Flexbox, bạn có thể giải quyết rất nhiều vấn đề về dàn trang trong CSS một cách linh hoạt, dễ dàng và tiết kiệm thời gian chỉ bằng một vài dòng mã. Vậy chúng ta cùng nhau tìm hiểu xem Flexbox là gì và lý do tại sao nó lại mạnh mẽ như vậy? Flexbox là gì?Bố cục Flexbox (hay còn gọi là Hộp linh hoạt) là một kiểu bố cục trang có khả năng tự cân đối kích thước, thay đổi chiều rộng/chiều cao và thứ tự tất cả các phần bên trong để phù hợp với tất cả các loại thiết bị hiển thị Với bố cục thông thường, bạn cần thiết lập kích thước của phần tử, thiết lập hiển thị ở dạng khối hoặc nội tuyến, cho nó nổi, còn với Flexbox bạn chỉ cần thiết lập phần hiển thị theo chiều ngang hoặc chiều dọc, lúc đó Lưu ý. Flexbox Layout phù hợp nhất để thiết lập bố cục cục bộ ở quy mô nhỏ, còn thiết lập bố cục cục bộ với phạm vi lớn hơn thì vẫn nên sử dụng kiểu thông thường là dàn trang theo dạng lưới (bố cục lưới) Khái niệm cơ bản và thuật ngữBố cục linh hoạt được thiết lập từ một khung lớn (khung chứa chính) đóng vai trò là khung linh hoạt (bộ chứa linh hoạt) và các thẻ con ngay trong nó (con ngay lập tức) đóng vai trò của các mục linh hoạt nhỏ (mục linh hoạt) Dưới đây là sơ đồ cấu trúc Flexbox Thành phần quan trọng nhất của Flexbox là
Các mục sẽ được bố trí theo trục chính của trục (bắt đầu từ main-start, kết thúc ở main-end) hoặc theo trục ngang của trục (bắt đầu từ cross-start, kết thúc ở cross-end)
3 điều bạn không thể biết về biến trong CSS 5 điều kiện khó chịu nhất của CSS Các thuộc tính của Flex Containertrưng bàyĐể sử dụng flex trong css thì menu đơn giản là chúng ta chỉ cần khai báo thuộc tính hiển thị. uốn cong
Lưu ý. các cột CSS thông thường không được sử dụng trong flex container hướng uốnThuộc tính flex-direction xác định hướng của main-axis to container sắp xếp các mục cú pháp
Các tham số
Ví dụ
Mã đầy đủ.
uốn dẻoTheo mặc định, mục sẽ tự động thay đổi kích thước phần tử để nó luôn hiển thị trên cùng một dòng dù bạn có thay đổi kích thước trình duyệt theo kích thước bất kỳ, điều này dễ dàng làm cho nội dung bên trong (nếu có) bị giãn hay Vì vậy, ta có thuộc tính flex-wrap cho phép mục tự động xuống dòng khi thay đổi kích thước vùng chứa cú pháp
Tham số
Ví dụ
0 Chạy mã sau đó thử thay đổi kích thước trình duyệt để biết rõ sự khác biệt hơn . 1 dòng chảy linh hoạtThuộc tính flex-flow sử dụng để gộp hai thuộc tính flex-direction và flex-wrap cú pháp 2 Ví dụ 3 biện minh cho nội dungTheo mặc định, các mục bên trong sẽ bắt đầu từ main start đến main end, tuy nhiên, double when container vẫn còn khoảng trống. Vì vậy, bạn có thể sử dụng thuộc tính justify-content để điều chỉnh vị trí bắt đầu và điều chỉnh các mục bên trong vùng chứa theo dọc theo trục chính của trục, chiều ngang hoặc chiều dọc tùy thuộc vào flex-direction cú pháp 4 Các tham số
Ví dụ. Main axis at here is going to ngang 5 6 7 8 9 0 Thay các giá trị vào code để thấy sự khác biệt nhé: 1 sắp xếp các mụcThuộc tính align-items sử dụng để điều chỉnh vị trí bắt đầu và căn chỉnh các mục bên trong vùng chứa theo trục dọc theo trục ngang, chiều ngang hoặc chiều dọc tùy thuộc vào flex-direction cú pháp 2 Các tham số và ví dụ minh họa kéo dài. giá trị mặc định, các phần tử sẽ được kéo dài để lấp đầy vùng chứa chứa nó, nhưng sẽ ưu tiên giá trị chiều cao/chiều rộng nếu có, khi mục đó sẽ không cao đầy đủ mà chỉ lấy giá trị chiều cao/chiều rộng mà bạn đã đặt 3 khởi động linh hoạt. mục sẽ bắt đầu từ dấu bắt đầu chéo của vùng chứa Ví dụ trường hợp mặc định với trục chính nằm ngang, trục ngang đứng dọc, hướng uốn. hàng thì các mục sẽ bắt đầu từ trên 4 kết thúc uốn cong. item will started from the cross-end of container. Default field with cross axis vertical, flex-direction. row, item will go to bottom 5 trung tâm. mục sẽ căn giữa theo chiều của trục chéo 6 đường cơ sở. mục được căn chỉnh theo đường cơ sở của chúng Đường cơ sở là đường mà tất cả các chữ cái sẽ “ngồi lên”. Bạn có thể sử dụng kích thước phông chữ khác nhau để thấy rằng các mục được căn chỉnh theo đường cơ sở của cơ sở 7 Mã đầy đủ, thay thế các giá trị để biết rõ hơn 8 căn chỉnh nội dungThuộc tính align-content được sử dụng để căn chỉnh khoảng cách các mục bên trong vùng chứa theo chiều dọc theo trục ngang của trục, chiều ngang hoặc chiều dọc tùy thuộc vào flex-direction cú pháp 9 Các tham số khởi động linh hoạt. mục sẽ bắt đầu từ lề chứa bắt đầu chéo của vùng chứa.0đầu uốn. mục sẽ bắt đầu từ lề chứa phần cuối của vùng chứa. 1trung tâm. item will be between container base theo cross-axis. 2dấu cách giữa. các mục sẽ có khoảng cách giữa các phần tử bằng nhau do container tự động căn khoảng cách, mục đầu tiên sát biên chứa bắt đầu chéo, mục cuối cùng sát lề chứa chéo. 3không gian xung quanh. space-between tương tự, but other at place is each item have the way 2 side by side and the other distance by nhau. 4kéo dài. giá trị mặc định, các phần tử sẽ được kéo dài, căn chỉnh sao cho đầy đủ vùng chứa chứa nó (ưu tiên giá trị chiều cao/chiều rộng nếu có). 5 Mã đầy đủ. 6 Các thuộc tính của Flex Itemgọi mónTheo mặc định, các mục sẽ hiển thị theo thứ tự xuất hiện trong HTML, nhưng với thuộc tính thứ tự, bạn có thể sắp xếp lại vị trí sắp xếp của các mục cú pháp 7 Ví dụ 8 uốn congThuộc tính flex-grow cho phép các phần tử giãn theo độ rộng của vùng chứa cú pháp 9 Thuộc tính này hơi phức tạp, Quantrimang sẽ minh họa một số trường hợp hoặc giúp bạn dễ hình dung hơn. Ví dụ ta đặt các mục có độ rộng là 100px Giá trị mặc định của thuộc tính flex-grow là 0, các mục sẽ không tự động co giãn kích thước, để thu lại nhiều khoảng trống trong vùng chứa Khi ta tăng flex-grow = 1, mục sẽ tự động giãn ra sao cho phù hợp với khung chứa Giá trị của flex-grow rất linh động, khi đặt thuộc tính này cho tất cả các mặt hàng với cùng một giá trị thì các mặt hàng sẽ có tỷ lệ giống nhau và được dàn đều cho đầy thùng chứa. Ví dụ đặt tất cả các phần tử flex-grow là 1 thì tất cả đều giống nhau như tỷ lệ 1. 1, which set flex-grow is 100, the result is will out future with the ratio 1. 1 Nhưng điều thú vị hơn ở flex-grow là áp dụng nó cho từng mục. Ta has default value at all the element is flex-grow = 0, change private value of item2 to 1, results as after Vì vậy, ở đây, thiết lập flex-grow là 1, item2 sẽ lấy phần trống còn lại của container đắp vào chính nó Bây giờ hãy thử chọn các phần tử đều là flex-grow. 1, nhưng đặt giá trị khác cho phần tử thứ 3 Lúc này thì tất cả các mục đều được giãn ra để lấp đầy phần trống của vùng chứa, nhưng mục3 có flex-grow. 3 sẽ được thừa hưởng nhiều phần trống hơn các mục còn lại chỉ có flex-grow. 1, tool can be better than interval 3 times. Và như đã đề cập ở trên, thuộc tính flex-grow làm cho các tỷ lệ phần tử tương ứng với nhau. Giả sử các item đều có flex-grow. 4 và item3 có thuộc tính flex-grow. 12 thì nó cũng tương tự như là 1 với 3 You order change the values to better 0 uốn congThuộc tính flex-shrink ngược lại với thuộc tính flex-grow ở trên, nó không giãn ra mà co lại khi chúng ta thay đổi độ rộng của vùng chứa cú pháp 1 Giá trị mặc định trong flex-shrink là 1, cho phép các phần tử co lại bằng nhau khi mở rộng vùng chứa xuống. Nếu flex-co lại. 0 thì mục sẽ không co giãn mà lấy nguyên giá trị của thuộc tính chiều rộng/chiều cao Nếu muốn item3 nó co lại nhiều hơn so với các item khác thì tăng giá trị flex-shrink của nó lên Thay đổi kích thước cửa sổ duyệt lại, item3 co lại nhiều hơn cơ sở linh hoạtThuộc tính flex-basis được sử dụng để xác định độ dài ban đầu của một mục cú pháp 2 Nếu bạn xác định độ dài chung của mục lớp là 100px nhưng tùy chỉnh mục3 với cơ sở linh hoạt. 250px thì ta sẽ được như sau uốn congThuộc tính flex sử dụng cho khu vực chung ba thuộc tính flex-grow, flex-shrink và flex-basis cú pháp 3 Thay vì phải sử dụng cả 3 thuộc tính 4 Thì bạn có thể sử dụng thuộc tính flex một cách ngắn gọn 5 default value of flex is 6 Lưu ý
tự sắp xếpThuộc tính align-self có tác dụng tương tự như align-items của phần chứa nhưng sử dụng riêng cho từng mục, bạn có thể sử dụng nó để đặt lại vị trí cho một số mục mà align-items đã định sẵn 7 Align-self cũng có các giá trị giống như align-items đó là. flex-start, flex-end, center, stretch và baseline Ví dụ. Ta có 5 item đã được căn giữa nhờ align-items. center as after Bạn có thể căn chỉnh các mục theo ý thích, mục1 nằm trên cùng, mục3 thì phải kéo giãn chiều dài ra và mục5 thì phải nằm dưới cùng, hãy sử dụng align-self để đặt lại các vị trí 8 Tạo thư viện ảnh bằng FlexboxSử dụng flexbox để tạo một bộ sưu tập ảnh hiển thị các bố cục cục bộ khác nhau tùy thuộc vào kích thước màn hình |