Ponieważ wdrożenie zmieniło się w przeszłości, znane są 2 główne implementacje Flexbox. This page podaje pewne podstawowe informacje o starej i nowej implementacji.
Znalazłem dobry samouczek dotyczący bieżącego stanu wdrożenia Flexbox here.
przykład kod HTML struktury strony (demo on Codepen here)
<div class="page-wrap">
<section class="main-content" role="main">
Main content: first in source order
</section>
<nav class="main-nav" role="navigation">
Links
</nav>
<aside class="main-sidebar" role="complementary">
Sidebar
</aside>
</div>
Aby podzielić page-wrap
w trzech elementów z main-nav
razy tak duży jak paski boczne, można było wykorzystać flexbox. Kolejną zaletą jest to, że pozycja elementu main-content
w DOM jest przed main-nav
, ale dzięki flexbox możemy renderować go przed treścią. Jest to użyteczne dla czytników ekranu, więc zawartość jest odczytywana jako pierwsza.
Musimy sprawić, aby page-wrap
był kontekstem flexbox. W ten sposób wszystkie dzieci stają się elementami flexbox:
.page-wrap {
display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */
display: -moz-box; /* OLD - Firefox 19- (buggy but mostly works) */
display: -ms-flexbox; /* TWEENER - IE 10 */
display: -webkit-flex; /* NEW - Chrome */
display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
Kolejność właściwości jest ważna. Ponieważ niektóre przeglądarki obsługują obie implementacje, musimy określić najnowsze właściwości poniżej starych właściwości. Wynika to z tego, że właściwość display
nie jest prefiksowana.
Aby dodać Szerokości elementów:
.main-content {
width: 60%;
}
.main-nav,
.main-sidebar {
-webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-flex: 1; /* OLD - Firefox 19- */
width: 20%; /* For old syntax, otherwise collapses. */
-webkit-flex: 1; /* Chrome */
-ms-flex: 1; /* IE 10 */
flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
Ostatnią rzeczą, jaką musimy zrobić, to zmienić kolejność elementów, bo teraz main-nav
staje po main-content
.main-content {
-webkit-box-ordinal-group: 2; /* OLD - iOS 6-, Safari 3.1-6 */
-moz-box-ordinal-group: 2; /* OLD - Firefox 19- */
-ms-flex-order: 2; /* TWEENER - IE 10 */
-webkit-order: 2; /* NEW - Chrome */
order: 2; /* NEW, Spec - Opera 12.1, Firefox 20+ */
}
.main-nav {
-webkit-box-ordinal-group: 1;
-moz-box-ordinal-group: 1;
-ms-flex-order: 1;
-webkit-order: 1;
order: 1;
}
.main-sidebar {
-webkit-box-ordinal-group: 3;
-moz-box-ordinal-group: 3;
-ms-flex-order: 3;
-webkit-order: 3;
order: 3;
}
If oglądasz listę mailingową, a nawet [ED] (http://dev.w3.org/csswg/css3-flexbox/), zauważysz, że przechodzi ogromną ilość zmian. Nie sądzę, żebyś miał coś bardziej niezawodnego niż zmieniająca się specyfikacja w tym momencie ... – BoltClock