Saya berencana untuk beralih dari layout "floaty" dan menggunakan CSS flexbox untuk proyek mendatang. Saya sangat senang melihat bahwa semua browser utama dalam versi mereka saat ini tampaknya mendukung (dalam satu atau lain cara) flexbox.
Saya menuju ke "Dipecahkan oleh Flexbox" untuk melihat beberapa contoh. Namun contoh "Sticky Footer" tampaknya tidak berfungsi di Internet Explorer 11. Saya bermain-main sedikit dan membuatnya berfungsi dengan menambahkan display:flex
ke <html>
dan width:100%
ke<body>
Jadi pertanyaan pertama saya adalah: Adakah yang bisa menjelaskan logika itu kepada saya? Saya hanya bermain-main dan berhasil, tetapi saya tidak begitu mengerti mengapa itu bekerja seperti itu ...
Lalu ada contoh "Objek Media" yang bekerja di semua browser kecuali - Anda dapat menebaknya - Internet Explorer. Aku juga bermain-main dengan itu, tapi tidak berhasil.
Oleh karena itu, pertanyaan kedua saya adalah: Apakah ada kemungkinan "bersih" untuk mendapatkan contoh "Objek Media" yang bekerja di Internet Explorer?
sumber
Jawaban:
Menurut http://caniuse.com/#feat=flexbox :
"Nilai default IE10 dan IE11
flex
adalah0 0 auto
daripada0 1 auto
, sesuai spesifikasi draf, per September 2013"Jadi dengan kata sederhana, jika di suatu tempat di CSS Anda memiliki sesuatu seperti ini:,
flex:1
itu tidak diterjemahkan dengan cara yang sama di semua browser. Cobalah mengubahnya menjadi1 0 0
dan saya yakin Anda akan segera melihat bahwa itu-agak- berhasil.Masalahnya adalah solusi ini mungkin akan mengacaukan firefox, tetapi kemudian Anda dapat menggunakan beberapa peretasan untuk hanya menargetkan Mozilla dan mengubahnya kembali:
Karena
flexbox
merupakan Kandidat W3C dan tidak resmi, browser cenderung memberikan hasil yang berbeda, tetapi saya rasa itu akan berubah dalam waktu dekat.Jika seseorang memiliki jawaban yang lebih baik, saya ingin tahu!
sumber
-ms-flex: 1 0 0;
dan IE11flex: 1 0 0;
..?flex: 1 0 0;
. Tapiflex: 1 0 0%;
( perhatikan % ) atauflex: 1 0 auto;
akan berhasil.flex: 1;
saya kira itu tergantung pada apa yang Anda inginkan, meskipun ...flex-basis
. Github memiliki diskusi yang baik tentang mengapaflex:1 0 100%
berfungsi di beberapa kasus untuk IE11 sementaraflex: 1 0 0%
atau bahkanflex: 1 0 auto
bekerja di orang lain. Anda harus tahu isinya sebelumnya.Gunakan wadah fleksibel lain untuk memperbaiki
min-height
masalah di IE10 dan IE11:HTML
CSS
Lihat demo kerja .
body
karena ini mengacaukan elemen yang dimasukkan melalui plugin jQuery (pelengkapan otomatis, popup, dll.).height:100%
atauheight:100vh
di wadah Anda karena footer akan menempel di bagian bawah jendela dan tidak akan beradaptasi dengan konten yang panjang.flex-grow:1
daripadaflex:1
menyebabkan nilai default IE10 dan IE11 untukflex
are0 0 auto
dan tidak0 1 auto
.sumber
flex-direction: column
untuk.ie-fixMinHeight
menghindari efek samping. Jika Anda tidak memiliki HTML khusus IE, Anda dapat menggunakan.fixMinHeight { display: -ms-flexbox; -ms-flex-direction: column; }
height
vsmin-height
adalah kuncinya.Anda hanya perlu
flex:1
; Ini akan memperbaiki masalah untuk IE11. Saya mendukung Odisseas. Selain itu, tetapkan tinggi 100% ke html, elemen tubuh .Perubahan CSS:
url yang berfungsi: http://jsfiddle.net/3tpuryso/13/
sumber
display: flex;
dan gaya terkait harus diterapkan baik padabody
dan kontainer: jsfiddle.net/Skateside/nezdrrkrmain
berhenti berkembang dengan baik (setidaknya di chrome); jika Anda menambahkan cukup konten, itu akan membanjiri footer. jsfiddle.net/3tpuryso/65html
kemin-height: 100%
, untuk mengikuti konten AndaBerikut adalah contoh penggunaan flex yang juga berfungsi di Internet Explorer 11 dan Chrome.
HTML
sumber
Html
.Terkadang sesederhana menambahkan: '-ms-' di depan gaya Like -ms-flex-flow: row wrap; untuk membuatnya bekerja juga.
sumber