Planuję odejść od "pływających" układów i używać CSS flexbox w przyszłych projektach. Byłem zachwycony, widząc, że wszystkie główne przeglądarki w ich aktualnych wersjach obsługują (w taki czy inny sposób) flexbox.
Udałem się do „Rozwiązany przez Flexbox”, aby spojrzeć na kilka przykładów. Jednak przykład „Sticky Footer” nie wydaje się działać w programie Internet Explorer 11. Pobawiłem się trochę i display:flex
uruchomiłem, dodając do <html>
i width:100%
do<body>
Więc moje pierwsze pytanie brzmi: czy ktoś może mi wyjaśnić tę logikę? Po prostu pogrzebałem i zadziałało, ale nie do końca rozumiem, dlaczego zadziałało w ten sposób ...
Następnie mamy przykład „Media Object”, który działa we wszystkich przeglądarkach z wyjątkiem - zgadłeś - Internet Explorera. Ja też się tym bawiłem, ale bez powodzenia.
Moje drugie pytanie brzmi zatem: czy istnieje „czysta” możliwość uzyskania przykładu „obiektu multimedialnego” działającego w przeglądarce Internet Explorer?
źródło
Odpowiedzi:
Według http://caniuse.com/#feat=flexbox :
„Wartości domyślne IE10 i IE11 dla
flex
są0 0 auto
raczej niż0 1 auto
zgodne z projektem specyfikacji, stan na wrzesień 2013 r.”Więc w prostych słowach, jeśli gdzieś w swoim CSS masz coś takiego:,
flex:1
to nie jest tłumaczone tak samo we wszystkich przeglądarkach. Spróbuj zmienić to na,1 0 0
a wierzę, że od razu zobaczysz, że to -kinda- działa.Problem polega na tym, że to rozwiązanie prawdopodobnie zepsuje firefoxa, ale wtedy możesz użyć kilku hacków, aby atakować tylko Mozillę i zmienić to z powrotem:
Ponieważ
flexbox
jest kandydatem do W3C, a nie oficjalnym, przeglądarki zazwyczaj dają różne wyniki, ale myślę, że to się zmieni w najbliższej przyszłości.Jeśli ktoś ma lepszą odpowiedź to chciałbym wiedzieć!
źródło
-ms-flex: 1 0 0;
IE10 i IE11flex: 1 0 0;
..?flex: 1 0 0;
. Aleflex: 1 0 0%;
( zwróć uwagę na % ) lubflex: 1 0 auto;
zadziała.flex: 1;
myślę, że zależy to od tego, do czegoflex-basis
. Github dobrze omawia, dlaczegoflex:1 0 100%
w niektórych przypadkach działa w IE11, aflex: 1 0 0%
nawetflex: 1 0 auto
działa w innych. Musisz znać zawartość z wyprzedzeniem.Użyj innego kontenera elastycznego, aby rozwiązać
min-height
problem w IE10 i IE11:HTML
CSS
Zobacz działające demo .
body
ponieważ skręca elementy wstawiane za pomocą wtyczek jQuery (autouzupełnianie, wyskakujące okienko itp.).height:100%
aniheight:100vh
na swoim kontenerze, ponieważ stopka będzie przyklejać się do dołu okna i nie dostosuje się do długich treści.flex-grow:1
zamiastflex:1
powodować domyślne wartości IE10 i IE11 dlaflex
są0 0 auto
i nie0 1 auto
.źródło
flex-direction: column
do.ie-fixMinHeight
uniknąć skutków ubocznych. Jeśli nie masz HTML-a specyficznego dla IE, możesz użyć.fixMinHeight { display: -ms-flexbox; -ms-flex-direction: column; }
height
Vsmin-height
był klucz.Po prostu potrzebujesz
flex:1
; To naprawi problem z IE11. Drugie Odisseas.Dodatkowo przypisz 100% wysokości do html, elementów body .Zmiany CSS:
działający adres URL: http://jsfiddle.net/3tpuryso/13/
źródło
display: flex;
style i skojarzone z nim muszą być zastosowane zarówno dobody
kontenera, jak i: jsfiddle.net/Skateside/nezdrrkrmain
przestaje rosnąć prawidłowo (przynajmniej w chrome); jeśli dodasz wystarczającą ilość treści, zajmie to stopkę. jsfiddle.net/3tpuryso/65html
abymin-height: 100%
zamiast podążać wraz z zawartościąOto przykład użycia flex, który działa również w Internet Explorerze 11 i Chrome.
HTML
źródło
Html
.Czasami jest to tak proste, jak dodanie: „-ms-” przed stylem Podobnie jak -ms-flex-flow: zawijanie wiersza; żeby to też zadziałało.
źródło