CSS3 Flexbox: display: box so với flexbox so với flex


83

Hôm qua, tôi có một trang web trong trường học sử dụng câu lệnh flexbox CSS 3. Tôi chưa bao giờ sử dụng nó trước đây. Vì vậy, tôi đã tìm kiếm nó một chút và tìm thấy rất nhiều kiểu khác nhau của các câu lệnh flexbox.

Một số người viết display: box;, một số sử dụng display: flexbox;, và khác display: flex;.

Vì vậy, sự khác biệt là gì? Tôi nên sử dụng cái nào?



Nhưng cái nào sẽ nhận được câu trả lời được chấp nhận trước ... Tôi sẽ bảo vệ tiền cược của bạn @cimmanon và đăng câu trả lời của bạn cho cả hai!
andyb

3
Không quan trọng cái nào được đóng lại. Một câu hỏi cũ hơn có thể được đóng lại nếu một câu hỏi mới hơn có câu trả lời tốt hơn. Tôi suy đoán rằng câu hỏi cũ hơn, được đăng dưới dạng "câu hỏi và câu trả lời" cùng một lúc sẽ không bao giờ được chấp nhận hoặc OP sẽ chấp nhận câu trả lời của chính họ. Giống như tôi đã nói, tôi sẽ sao chép câu trả lời của bạn ở đây và bỏ phiếu để đóng câu trả lời cũ hơn làm bản sao của câu này, giả sử OP chấp nhận câu trả lời :-)
andyb

2
@andyb: Đối với tôi có cả hai câu trả lời ở đây liên kết tốt hơn và cũng là một giải pháp ... Vì vậy, tôi nghĩ, câu hỏi của tôi không nên bị đóng lại, ngay cả khi nó trùng lặp.

2
@andyb: À! Tôi đã bỏ lỡ điều đó bằng cách nào đó. Chúng tôi sẽ xem nó trong thời gian ngắn. Cảm ơn.
BoltClock

Câu trả lời:


150

Đây là những phong cách khác nhau.
display: box;là phiên bản của năm 2009.
display: flexbox;là phiên bản của năm 2011.
display: flex;là phiên bản thực tế.

Trích lời của Paul Ailen

Cảnh báo: Flexbox đã trải qua một số sửa đổi lớn, vì vậy bài viết này đã lỗi thời. Tóm lại, tiêu chuẩn cũ (Flexbox 2009) , dựa trên bài viết này, đã được triển khai trong Chrome kể từ phiên bản 4, Firefox kể từ phiên bản 2 và IE10 phiên bản beta.

Kể từ đó, tiêu chuẩn flexbox mới ra mắt và bắt đầu ra mắt trong Chrome 17. Stephan Hay đã viết một hướng dẫn về cách triển khai flexbox mới . Kể từ đó, thông số kỹ thuật đã trải qua các thay đổi đặt tên và bắt đầu xuất hiện trong Chrome 21. Chrome 22 có triển khai ổn định thông số kỹ thuật mới nhất.

Tại thời điểm này, thực hiện một trong hai rủi ro của nó , vì vậy hãy lưu ý.

Đây là blog về các câu lệnh flexbox khác nhau.
Đây là một mục blog bằng thủ thuật css về các phiên bản khác nhau.

Khi tôi sử dụng flexbox, tôi luôn viết nó như thế:

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;

Chỉnh sửa:
Vẫn không phải ai cũng có trình duyệt / thiết bị có khả năng xem bố cục flexbox. Vì vậy, đối với các giải pháp dự phòng hoặc các lựa chọn thay thế, có bài viết này của Kenan Yusuf về cách sử dụng flexbox mà không cần sử dụng flexbox .


trình tự khai báo có vẻ quan trọng. Tôi đang làm việc trên Android chrome cũ chỉ hỗ trợ -webkit-box, tuyên bố này phải đến cuối cùng mới có hiệu lực. Bất cứ ai cũng trải nghiệm điều này?
ken

3
@Ken Không, -webkit-boxđến trước. Tuyên bố cuối cùng của bạn phải luôn là mới nhất hoặc Tiêu chuẩn W3C. Tuy nhiên, tôi khuyên bạn nên sử dụng -ms-flexboxsau -webkit-flexvì IE12 / Edge hỗ trợ -webkit-flex, nhưng về mặt kỹ thuật, bạn muốn IE sử dụng -ms-tiền tố thích hợp của nó thay vì -webkit-. Đó là một nitpick thận trọng chung mặc dù như display: flex; ở đây không bị ảnh hưởng bởi IE12.
hexalys

9

Đặc điểm kỹ thuật đã trải qua nhiều lần lặp lại, xem 2009 , 2012 , 2013 và mỗi lần giá trị được thay đổi. display: flex;là mới nhất.

Nó vẫn là một đặc điểm kỹ thuật dự thảo vì vậy mọi triển khai hiện tại vẫn có thể thay đổi.


1

hiển thị: flex; Là phiên bản mới nhất và tốt hơn hiện tại chúng tôi có thể sử dụng nó trong mã của chúng tôi.

Vì vậy, đi cho điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.