Tóm Tắt
Phương pháp căn chỉnh các mục linh hoạt dọc theo trục chính
Như đã nêu trong câu hỏi :
Để căn chỉnh các mục flex dọc theo trục chính, có một thuộc tính:
justify-content
Để sắp xếp các mặt hàng flex dọc theo trục chéo có ba thuộc tính:
align-content
,align-items
vàalign-self
.
Câu hỏi sau đó hỏi:
Tại sao không có
justify-items
vàjustify-self
tài sản?
Một câu vấn đáp hoàn toàn có thể là : Bởi vì chúng không thiết yếu .Đặc tả flexbox cung ứng hai giải pháp để chỉnh sửa những mục flex dọc theo trục chính :
- Các
justify-content
bất động sản từ khóa, và auto
lề
nội dung biện minh
Các justify-content
tài sản gắn mục flex dọc theo trục chính của container flex.
Nó được vận dụng cho container flex nhưng chỉ ảnh hưởng tác động đến những mục flex .Có năm tùy chọn chỉnh sửa :
-
flex-start
~ Các mặt hàng Flex được đóng gói vào đầu dòng. -
flex-end
~ Các mặt hàng Flex được đóng gói vào cuối dòng. -
center
~ Các mặt hàng Flex được đóng gói về phía trung tâm của dòng. -
space-between
~ Các mặt hàng Flex được đặt cách đều nhau, với mặt hàng đầu tiên được căn chỉnh theo một cạnh của thùng chứa và mặt hàng cuối cùng được căn chỉnh theo cạnh đối diện. Các cạnh được sử dụng bởi các mục đầu tiên và cuối cùng phụ thuộc vàoflex-direction
và chế độ viết (ltr
hoặcrtl
). -
space-around
~ Tương tự nhưspace-between
ngoại trừ với không gian nửa kích thước ở cả hai đầu.
Lợi nhuận tự động
Với auto
lề, các mục flex có thể được căn giữa, cách nhau hoặc đóng gói thành các nhóm phụ.
Không giống như justify-content
, được áp dụng cho container flex, auto
lề đi vào các mục flex.
Họ thao tác bằng cách tiêu thụ tổng thể khoảng trống trống theo hướng được chỉ định .
Sắp xếp nhóm các mục flex ở bên phải, nhưng mục đầu tiên bên trái
Kịch bản từ câu hỏi :
tạo một nhóm các mục flex thẳng hàng phải (
justify-content: flex-end
) nhưng có mục đầu tiên căn lề trái (justify-self: flex-start
)Xem xét một phần tiêu đề với một nhóm các mục điều hướng và logo. Với
justify-self
logo có thể được căn trái trong khi các mục điều hướng ở bên phải và toàn bộ điều chỉnh trơn tru (“uốn cong”) với các kích thước màn hình khác nhau.
Các kịch bản hữu ích khác:
Đặt một mục flex trong góc
Kịch bản từ câu hỏi :
- đặt một vật phẩm flex ở một góc
.box { align-self: flex-end; justify-self: flex-end; }
Trung tâm một mục flex theo chiều dọc và chiều ngang
margin: auto
là một thay thế cho justify-content: center
và align-items: center
.
Thay vì mã này trên container flex :
.container{justify-content:center;align-items:center;}
Bạn hoàn toàn có thể sử dụng điều này trên mục flex :
.box56{margin:auto;}
Sự thay thế này rất hữu ích khi căn giữa một vật phẩm flex tràn vào thùng chứa .
Căn giữa một mục flex và căn giữa một mục flex thứ hai giữa cạnh thứ nhất và cạnh
Một container flex sắp xếp những mục flex bằng cách phân phối khoảng trống trống .Do đó, để tạo ra sự cân đối như nhau, để một vật phẩm ở giữa hoàn toàn có thể được căn giữa trong vật chứa với một vật phẩm duy nhất bên cạnh, một đối trọng phải được đưa ra .Trong những ví dụ dưới đây, những mục flex thứ ba vô hình dung ( hộp 61 và 68 ) được trình làng để cân đối những mục ” thực ” ( hộp 63 và 66 ) .
Tất nhiên, giải pháp này không có gì tuyệt vời về mặt ngữ nghĩa .
Ngoài ra, bạn có thể sử dụng phần tử giả thay vì phần tử DOM thực tế. Hoặc bạn có thể sử dụng định vị tuyệt đối. Tất cả ba phương pháp được đề cập ở đây: Các mục flex căn giữa và dưới cùng
LƯU Ý : Các ví dụ trên sẽ chỉ hoạt động giải trí – về mặt định tâm thực sự – khi những mục ngoài cùng có chiều cao / chiều rộng bằng nhau. Khi những mục flex có độ dài khác nhau, xem ví dụ tiếp theo .
Trung tâm một mục flex khi các mục liền kề khác nhau về kích thước
Kịch bản từ câu hỏi :
trong một hàng gồm ba mục flex, gắn vật phẩm ở giữa vào giữa của container (
justify-content: center
) và căn chỉnh các mục liền kề với các cạnh của container (justify-self: flex-start
vàjustify-self: flex-end
).Lưu ý rằng các giá trị
space-around
vàspace-between
thuộcjustify-content
tính sẽ không giữ mục giữa ở giữa liên quan đến vùng chứa nếu các mục liền kề có chiều rộng khác nhau ( xem bản demo ).
Như đã lưu ý, trừ khi tất cả các mục flex có chiều rộng hoặc chiều cao bằng nhau (tùy thuộc vào flex-direction
), mục giữa không thể thực sự được căn giữa. Vấn đề này làm cho một trường hợp mạnh mẽ cho một justify-self
tài sản (tất nhiên được thiết kế để xử lý các nhiệm vụ).
Hiển thị đoạn mã
#container{display:flex;justify-content:space-between;background-color:lightyellow;}.box{height:50 px;width:75 px;background-color:springgreen;}.box1{width:100 px;}.box3{width:200 px;}#center{text-align:center;margin-bottom:5 px;}#center>span{background-color:aqua;padding:2 px;}
The middle box will be truly centered only if adjacent boxes are equal width .
Đây là hai giải pháp để xử lý yếu tố này :
Giải pháp số 1: Định vị tuyệt đối
Thông số kỹ thuật flexbox được cho phép xác định tuyệt đối những mục flex. Điều này được cho phép vật phẩm ở giữa được căn giữa một cách hoàn hảo nhất bất kể kích cỡ của anh chị em của nó .Chỉ cần quan tâm rằng, giống như toàn bộ những yếu tố được xác định tuyệt đối, những mục được xóa khỏi luồng tài liệu. Điều này có nghĩa là họ không chiếm khoảng trống trong container và hoàn toàn có thể chồng lên anh chị em của họ .
Trong các ví dụ dưới đây, mục giữa được căn giữa với định vị tuyệt đối và các mục bên ngoài vẫn trong dòng. Nhưng cách bố trí tương tự có thể đạt được theo kiểu ngược lại: Căn giữa mục giữa justify-content: center
và hoàn toàn định vị các mục bên ngoài.
Giải pháp số 2: Container linh hoạt lồng nhau (không định vị tuyệt đối)
.container{display:flex;}.box{flex:1;display:flex;justify-content:center;}.box71>span{margin-right:auto;}.box73>span{margin-left:auto;}/ * non-essential * /.box{align-items:center;border:1 pxsolid# ccc;background-color:lightgreen;height:40 px;}
class=" container ">class=" box box71 ">
71 short
>
72 centered
>
73 loooooooooooooooong
Đây là cách nó hoạt động giải trí :
- Div cấp cao nhất (
.container
) là một thùng chứa flex. - Mỗi div div (
.box
) bây giờ là một mục flex. - Mỗi
.box
mục được đưaflex: 1
ra để phân phối không gian container bằng nhau. - Bây giờ các mục đang tiêu thụ tất cả không gian trong hàng và có chiều rộng bằng nhau.
- Làm cho mỗi mục một thùng chứa flex (lồng nhau) và thêm
justify-content: center
. - Bây giờ mỗi
span
phần tử là một mục flex trung tâm. - Sử dụng
auto
lề flex để dịch chuyểnspan
s bên trái và bên phải.
Bạn cũng có thể từ bỏ justify-content
và sử dụng auto
lợi nhuận độc quyền.
Nhưng justify-content
có thể làm việc ở đây vì auto
lợi nhuận luôn được ưu tiên. Từ thông số kỹ thuật:
8.1. Căn chỉnh với
auto
lềTrước khi căn chỉnh thông qua
justify-content
vàalign-self
, mọi không gian trống tích cực sẽ được phân phối cho các lề tự động theo chiều đó.
justify-content: space-same (khái niệm)
Quay trở lại justify-content
trong một phút, đây là một ý tưởng cho một lựa chọn khác.
space-same
~ Một sự kết hợp củaspace-between
vàspace-around
. Các mục Flex được đặt cách đều nhau (nhưspace-between
), ngoại trừ thay vì khoảng trống một nửa ở cả hai đầu (nhưspace-around
), có không gian kích thước đầy đủ ở cả hai đầu.
Bố cục này có thể đạt được với ::before
và ::after
các phần tử giả trên thùng chứa flex.
Xem thêm: Pesudo class trong CSS – Tự học CSS
( tín dụng thanh toán : @ oriol cho mã và @ crl cho nhãn )
CẬP NHẬT: Các trình duyệt đã bắt đầu thực hiện space-evenly
, thực hiện các điều trên. Xem bài đăng này để biết chi tiết: Không gian bằng nhau giữa các mục flex
PLAYGROUND (bao gồm mã cho tất cả các ví dụ ở trên)
Source: https://final-blade.com
Category: Kiến thức Internet