Estoy planeando alejarme de los diseños "flotantes" y usar CSS flexbox para proyectos futuros. Me encantó ver que todos los principales navegadores en sus versiones actuales parecen admitir (de una forma u otra) flexbox.
Me dirigí a "Resuelto por Flexbox" para ver algunos ejemplos. Sin embargo, el ejemplo de "Sticky Footer" no parece funcionar en Internet Explorer 11. Jugué un poco y logré que funcionara agregando display:flex
al <html>
y width:100%
al<body>
Entonces mi primera pregunta es: ¿Alguien puede explicarme esa lógica? Simplemente jugueteé y funcionó, pero no entiendo por qué funcionó de esa manera ...
Luego está el ejemplo de "Objeto multimedia" que funciona en todos los navegadores excepto, lo adivinó, Internet Explorer. Yo también jugueteé con eso, pero sin éxito.
Por tanto, mi segunda pregunta es: ¿Existe una posibilidad "limpia" de que el ejemplo de "Objeto multimedia" funcione en Internet Explorer?
fuente
Respuestas:
Según http://caniuse.com/#feat=flexbox :
"Los valores predeterminados de IE10 e IE11 para
flex
son en0 0 auto
lugar de0 1 auto
, según la especificación preliminar, a septiembre de 2013"Entonces, en palabras simples, si en algún lugar de su CSS tiene algo como esto:,
flex:1
eso no se traduce de la misma manera en todos los navegadores. Intente cambiarlo a1 0 0
y creo que verá inmediatamente que -kinda- funciona.El problema es que esta solución probablemente arruinará Firefox, pero luego puedes usar algunos trucos para apuntar solo a Mozilla y volver a cambiarlo:
Dado que
flexbox
es un candidato del W3C y no es oficial, los navegadores tienden a dar resultados diferentes, pero supongo que eso cambiará en el futuro inmediato.¡Si alguien tiene una mejor respuesta, me gustaría saber!
fuente
-ms-flex: 1 0 0;
e IE11flex: 1 0 0;
..?flex: 1 0 0;
. Peroflex: 1 0 0%;
( tenga en cuenta el % ) oflex: 1 0 auto;
funcionará.flex: 1;
Supongo que depende de lo que estés buscando, aunque ...flex-basis
. Github tiene una buena discusión sobre por quéflex:1 0 100%
funciona en algunos casos para IE11flex: 1 0 0%
o inclusoflex: 1 0 auto
funciona en otros. Tienes que conocer el contenido de antemano.Use otro contenedor flexible para solucionar el
min-height
problema en IE10 e IE11:HTML
CSS
Vea una demostración funcional .
body
porque estropea los elementos insertados a través de los complementos de jQuery (autocompletar, emergente, etc.).height:100%
oheight:100vh
en su contenedor porque el pie de página se pegará en la parte inferior de la ventana y no se adaptará al contenido extenso.flex-grow:1
lugar deflex:1
causar los valores predeterminados de IE10 e IE11 paraflex
son0 0 auto
y no0 1 auto
.fuente
flex-direction: column
a.ie-fixMinHeight
evitar los efectos secundarios. Si no tiene HTML específico de IE, puede usar.fixMinHeight { display: -ms-flexbox; -ms-flex-direction: column; }
height
vsmin-height
fue la clave.Solo necesitas
flex:1
; Solucionará el problema del IE11. Yo segundo Odisseas. Además, asigne 100% de altura a html, elementos del cuerpo .Cambios de CSS:
URL de trabajo: http://jsfiddle.net/3tpuryso/13/
fuente
display: flex;
estilos y asociados deben aplicarse tanto albody
contenedor como al: jsfiddle.net/Skateside/nezdrrkrmain
deje de crecer correctamente (en cromo, al menos); si agrega suficiente contenido, invadirá el pie de página. jsfiddle.net/3tpuryso/65html
paramin-height: 100%
seguir su contenidoAquí hay un ejemplo del uso de flex que también funciona en Internet Explorer 11 y Chrome.
HTML
fuente
Html
.A veces es tan simple como agregar: '-ms-' delante del estilo Like -ms-flex-flow: row wrap; para que funcione también.
fuente