html - guia - inline flex
Problema de representación de desplazamiento vertical en Flexbox en Firefox (1)
Esto tiene que ver con el algoritmo de tamaño mínimo implícito de la especificación flexbox.
Este es un error de Firefox .
Añadiendo min-width: 0; min-height: 0
min-width: 0; min-height: 0
to #wrapper
parece hacer el truco:
#wrapper {
display: flex;
flex-grow: 2;
flex-basis: 0%;
min-height: 0; /* NEW */
min-width: 0; /* NEW */
}
Respuesta original a continuación
Actualmente tiene overflow-y: scroll
aplicado a #left
.
Si también aplica overflow-y: scroll
a #wrapper
, el scroll vertical se inicia en Firefox.
En cuanto a por qué Firefox interpreta el código de forma diferente a Chrome no puedo decir. Los motores de renderizado tienen sus diferencias. Hace poco abordé otro problema de interpretación de flexbox entre IE11 y Chrome :
Más información:
DEMO: http://jsfiddle.net/seqgz8qv/ (scroll funciona en FF)
Flexbox y scroll vertical en una aplicación de altura completa usando NEWER api flexbox
Esta pregunta ya tiene una respuesta aquí:
Deseo incluir un elemento flexible dentro del padre para que no se derrame fuera del padre. Solo el elemento flexible debe tener una barra de desplazamiento (si es necesario).
Mi estilo funciona bien en Chrome e IE11, pero no en Firefox. Sospecho que hay una diferencia en la interpretación del estilo de flex-basis
establecido en #wrapper
, pero no puedo entender por qué Firefox lo interpreta de manera diferente.
Aquí está el renderizado deseado como se ve en Chrome:
Y esto es lo que sucede en Firefox:
Podría aplicar un arreglo de "cinta adhesiva" agregando #left { height: calc(100vh - 50px); }
#left { height: calc(100vh - 50px); }
, pero preferiría identificar la inconsistencia real si es posible.
body, html, h1 {
padding: 0;
margin: 0;
}
header {
background-color: rgba(0, 255, 255, 0.2);
height: 50px;
}
#main {
height: 100vh;
background-color: rgba(0, 255, 255, 0.1);
display: flex;
flex-flow: column;
}
#wrapper {
display: flex;
flex-grow: 2;
flex-basis: 0%;
}
#left {
overflow-y: scroll;
background-color: rgba(0, 255, 255, 0.2);
width: 30%;
}
.box {
margin: 5px 0;
height: 50px;
width: 100%;
background-color: rgba(0, 0, 0, 0.2);
}
<div id="main">
<header>
<h1>Header</h1>
</header>
<div id="wrapper">
<div id="left">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
</div>