CSS3 Flexbox: дисплей: коробка проти flexbox проти flex


83

Вчора я отримав веб-сайт у школі, який використовує твердження CSS 3 flexbox. Я ніколи раніше цим не користувався. Тож я трохи погуглив і знайшов багато різних стилів операторів flexbox.

Деякі хлопці пишуть display: box;, деякі використовують display: flexbox;і інше display: flex;.

То які відмінності? Що я повинен використовувати?


7
Точний дублікат: stackoverflow.com/questions/15662578 / ...
cimmanon

Але який із них отримає прийняту відповідь першим ... Я б хеджував ваші ставки @cimmanon і розмістив свою відповідь обом!
andyb

3
Не має значення, який закритий. Старше запитання можна закрити, якщо на нове відповідь буде кращою. Я припускаю, що старіше запитання, яке було опубліковано як "питання та відповідь" точно в той самий час, ніколи не буде прийняте, або ОП прийме власну відповідь. Як я вже сказав, я б продублював вашу відповідь тут і проголосував, щоб закрити старшу як дублікат цієї, припускаючи, що ОП приймає відповідь :-)
andyb

2
@andyb: Для мене є обидві відповіді тут, кращі посилання, а також рішення ... Тому я думаю, моє запитання не повинно бути закритим, навіть якщо це дублікат.

2
@andyb: Ах! Я якось пропустив це. Ми подивимось це незабаром. Дякую.
BoltClock

Відповіді:


151

Це різні стилі.
display: box;є версією 2009 р.
display: flexbox;є версією 2011 р.
display: flex;є фактичною версією.

Цитата Пола Ірландського

Попередження: Flexbox зазнав деяких основних змін, тож ця стаття застаріла. Підводячи підсумок, старий стандарт (Flexbox 2009) , на якому базується ця стаття, був впроваджений у Chrome з v4, Firefox з v2 та IE10 beta.

З тих пір новий стандарт flexbox дебютував і почав дебютувати в Chrome 17. Стівен Хей написав керівництво щодо нової реалізації flexbox . З тих пір специфікація зазнала змін у іменах, які почали потрапляти в Chrome 21. Chrome 22 має стабільну реалізацію останньої специфікації.

На даний момент впровадження будь-якого з них має свої ризики , тому майте на увазі.

Ось блог про різні оператори flexbox.
Це запис у блозі css-tricks про різні версії.

Коли я використовую flexbox, я завжди пишу це так:

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

Редагувати:
Досі не у всіх є браузер / пристрій, здатний переглядати макети flexbox. Отже, про резервні рішення чи альтернативи є ця стаття Кенана Юсуфа про те, як використовувати flexbox без використання flexbox .


послідовність декларації здається важливою. Я працював над старим Android chrome, який підтримує лише -webkit-box, ця декларація повинна бути останньою, щоб набути чинності. Хтось теж це відчуває?
ken

3
@Ken Ні, на -webkit-boxпершому місці. Остання ваша декларація завжди повинна бути найсвіжішою або стандартом W3C. Однак я б рекомендував -ms-flexboxпізніше, -webkit-flexоскільки IE12 / Edge підтримує -webkit-flex, але ви технічно хочете, щоб IE використовував відповідний -ms-префікс замість -webkit-. Це загальна обережність, хоча як дисплей: flex; тут не впливає IE12.
hexalys

10

Специфікація пройшла безліч ітерацій, див. 2009 , 2012 , 2013, і кожен раз, коли значення змінювалося. display: flex;є останньою.

Це все ще проект специфікації, тому будь-яка поточна реалізація все ще може змінитися.


1

дисплей: гнучкий; Наразі це остання та краща версія, ми можемо використовувати це в нашому коді.

Так що йдіть на це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.