Sự khác biệt giữa "flex" và "inline-flex"
Câu trả lời ngắn:
Một là nội tuyến và cơ bản khác đáp ứng như một phần tử khối (nhưng có một số khác biệt riêng của nó).
Câu trả lời dài hơn:
Inline-Flex - Phiên bản nội tuyến của flex cho phép phần tử và phần tử con có các thuộc tính flex trong khi vẫn duy trì trong luồng thông thường của tài liệu / trang web. Về cơ bản, bạn có thể đặt hai thùng chứa flex nội tuyến trong cùng một hàng, nếu chiều rộng đủ nhỏ, không có bất kỳ kiểu dáng thừa nào để cho phép chúng tồn tại trong cùng một hàng. Điều này khá giống với "khối nội tuyến".
Flex - Container và nó là các thuộc tính flex nhưng container chứa hàng, vì nó được lấy ra khỏi luồng thông thường của tài liệu. Nó đáp ứng như một phần tử khối, về mặt luồng tài liệu. Hai thùng chứa flexbox không thể tồn tại trên cùng một hàng mà không có kiểu dáng thừa.
Vấn đề bạn có thể gặp phải
Do các yếu tố bạn đã liệt kê trong ví dụ của mình, mặc dù tôi đoán, tôi nghĩ rằng bạn muốn sử dụng flex để hiển thị các yếu tố được liệt kê theo kiểu hàng ngang nhưng tiếp tục nhìn thấy các yếu tố cạnh nhau.
Lý do bạn có thể gặp sự cố là do flex và inline-flex có thuộc tính "flex-direction" mặc định được đặt thành "hàng". Điều này sẽ hiển thị trẻ em cạnh nhau. Thay đổi thuộc tính này thành "cột" sẽ cho phép các thành phần của bạn xếp chồng và không gian dự trữ (chiều rộng) bằng với chiều rộng của cha mẹ của nó.
Dưới đây là một số ví dụ để cho thấy cách thức hoạt động của flex vs inline-flex và cũng là bản demo nhanh về cách các phần tử nội tuyến và khối hoạt động ...
display: inline-flex; flex-direction: row;
Vĩ cầm
display: flex; flex-direction: row;
Vĩ cầm
display: inline-flex; flex-direction: column;
Vĩ cầm
display: flex; flex-direction: column;
Vĩ cầm
display: inline;
Vĩ cầm
display: block
Vĩ cầm
Ngoài ra, một tài liệu tham khảo tuyệt vời:
Hướng dẫn đầy đủ về Flexbox - thủ thuật css
inline-flex
vàflex
: jsfiddle.net/mgr0en3q/1 Fiddle gốc bởi @ fish-Graphics và @astridx