Cómo centrar div horizontalmente y verticalmente dentro del contenedor usando flexbox. En el ejemplo a continuación, quiero que cada número esté uno debajo del otro (en filas), que están centrados horizontalmente.
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: flex;
align-items: center;
justify-content: center;
}
row {
width: 100%;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
<div class="flex-container">
<div class="row">
<span class="flex-item">1</span>
</div>
<div class="row">
<span class="flex-item">2</span>
</div>
<div class="row">
<span class="flex-item">3</span>
</div>
<div class="row">
<span class="flex-item">4</span>
</div>
</div>

row{que no tiene efecto en las filas. Si lo cambia al.row{resultado sería totalmente diferente.Respuestas:
Creo que quieres algo como lo siguiente.
Ver demostración en: http://jsfiddle.net/audetwebdesign/tFscL/
Sus
.flex-itemelementos deben estar a nivel de bloque (endivlugar despan) si desea que la altura y el relleno superior / inferior funcionen correctamente.Además, en
.row, establezca el ancho enautolugar de100%.Tus
.flex-containerpropiedades están bien.Si desea
.rowque se centre verticalmente en el puerto de vista, asigne un 100% de altura ahtmlybody, y también ponga a cero losbodymárgenes.Tenga en cuenta que
.flex-containernecesita una altura para ver el efecto de alineación vertical; de lo contrario, el contenedor calcula la altura mínima necesaria para encerrar el contenido, que es menor que la altura del puerto de vista en este ejemplo.Nota:
El
flex-flow,flex-direction,flex-wrappropiedades podría haber hecho este diseño más fácil de implementar. Creo que el.rowcontenedor no es necesario a menos que desee agregar un poco de estilo alrededor de los elementos (imagen de fondo, bordes, etc.).Un recurso útil es: http://demo.agektmr.com/flexbox/
fuente
Cómo centrar elementos vertical y horizontalmente en Flexbox
A continuación se presentan dos soluciones generales de centrado.
Uno para elementos flexibles alineados verticalmente (
flex-direction: column) y el otro para elementos flexibles alineados horizontalmente (flex-direction: row).En ambos casos, la altura de los divs centrados puede ser variable, indefinida, desconocida, lo que sea. La altura de los divs centrados no importa.
Aquí está el HTML para ambos:
CSS (excluyendo estilos decorativos)
Cuando los elementos flexibles se apilan verticalmente:
MANIFESTACIÓN
Cuando los elementos flexibles se apilan horizontalmente:
Ajuste la
flex-directionregla del código anterior.MANIFESTACIÓN
Centrar el contenido de los elementos flexibles
El alcance de un contexto de formato flexible se limita a una relación padre-hijo. Los descendientes de un contenedor flexible más allá de los hijos no participan en el diseño flexible e ignorarán las propiedades flexibles. Esencialmente, las propiedades flexibles no son heredables más allá de los niños.
Por lo tanto, siempre tendrá que aplicar
display: flexodisplay: inline-flexun elemento primario para aplicar propiedades flexibles al elemento secundario.Para centrar verticalmente y / u horizontalmente el texto u otro contenido contenido en un elemento flexible, haga que el elemento sea un contenedor flexible (anidado) y repita las reglas de centrado.
Más detalles aquí: ¿Cómo alinear verticalmente el texto dentro de un flexbox?
Alternativamente, puede aplicar
margin: autoal elemento de contenido del elemento flexible.Obtenga información sobre los
automárgenes flexibles aquí: Métodos para alinear elementos flexibles (consulte el cuadro 56).Centrar múltiples líneas de artículos flexibles
Cuando un contenedor flexible tiene varias líneas (debido al ajuste), la
align-contentpropiedad será necesaria para la alineación del eje transversal.De la especificación:
Más detalles aquí: ¿Cómo funciona flex-wrap con align-self, align-items y align-content?
Soporte del navegador
Flexbox es compatible con todos los principales navegadores, excepto IE <10 . Algunas versiones recientes del navegador, como Safari 8 e IE10, requieren prefijos de proveedor . Para una forma rápida de agregar prefijos, use Autoprefixer . Más detalles en esta respuesta .
Solución de centrado para navegadores antiguos
Para obtener una solución de centrado alternativa que utiliza la tabla CSS y las propiedades de posicionamiento, consulte esta respuesta: https://stackoverflow.com/a/31977476/3597276
fuente
Añadir
al elemento contenedor de lo que quieras centrar. Documentación: justificar contenido y alinear elementos .
fuente
display: inline-flexen mi caso, pero esa fue una edición fácil)No olvide usar atributos específicos de los navegadores importantes:
alinear elementos: centro; ->
justify-content: centro; ->
Puede leer estos dos enlaces para comprender mejor flex: http://css-tricks.com/almanac/properties/j/justify-content/ y http://ptb2.me/flexbox/
Buena suerte.
fuente
1 - Establecer CSS en el elemento primario div a
display: flex;2 - Establezca CSS en el div padre para
flex-direction: column;que tenga en cuenta que esto hará que todo el contenido dentro de ese div se alinee de arriba a abajo. Esto funcionará mejor si el elemento primario solo contiene el elemento secundario y nada más.
3 - Establecer CSS en el padre div a
justify-content: center;Aquí hay un ejemplo de cómo se verá el CSS:
fuente
Puedes hacer uso de
display: flex; align-items: center; justify-content: center;en su componente principal
fuente
diplay: flex;por su contenedor ymargin:auto;por su artículo funciona perfecto.NOTA: Debe configurar
widthyheightpara ver el efecto.fuente
Si necesita centrar un texto en un enlace, esto funcionará:
fuente
margin: autofunciona perfecto con flexbox. Se centraliza vertical y horizontalmente.fuente
RESULTADO:
CÓDIGO
HTML:
CSS:
donde
flex-containerdiv se usa para centrar vertical y horizontalmente surowsdiv, yrowsdiv se usa para agrupar sus "elementos" y ordenarlos en una columna basada en uno.fuente
fuente
Usando CSS +
echa un vistazo AQUÍ
fuente