¿Cómo puedo centrar horizontalmente un elemento?
¿Cómo puedo centrar horizontalmente uno <div>
dentro de otro <div>
usando CSS?
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Con flexbox
él es muy fácil diseñar el div centrado horizontal y verticalmente.
#inner {
border: 0.05em solid black;
}
#outer {
border: 0.05em solid red;
width:100%;
display: flex;
justify-content: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Para alinear el div verticalmente centrado, use la propiedad align-items: center
.
Otras soluciones
Puedes aplicar este CSS al interior <div>
:
#inner {
width: 50%;
margin: 0 auto;
}
Por supuesto, no es necesario configurarlo width
en 50%
. Cualquier ancho menor que el contenedor <div>
funcionará. Esto margin: 0 auto
es lo que hace el centrado real.
Si su objetivo es Internet Explorer 8 (y posterior), podría ser mejor tener esto en su lugar:
#inner {
display: table;
margin: 0 auto;
}
Hará que el elemento interior se centre horizontalmente y funcionará sin establecer un valor específico width
.
Ejemplo de trabajo aquí:
#inner {
display: table;
margin: 0 auto;
border: 1px solid black;
}
#outer {
border: 1px solid red;
width:100%
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Si no desea establecer un ancho fijo en el interior, div
puede hacer algo como esto:
#outer {
width: 100%;
text-align: center;
}
#inner {
display: inline-block;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Eso convierte el interior div
en un elemento en línea que se puede centrar con text-align
.
Los mejores enfoques son con CSS3.
El modelo de caja antiguo (obsoleto)
display: box
y sus propiedades box-pack
, box-align
, box-orient
, box-direction
etc. han sido reemplazadas por flexbox. Si bien es posible que aún funcionen, no se recomienda su uso en producción.
#outer {
width: 100%;
/* Firefox */
display: -moz-box;
-moz-box-pack: center;
-moz-box-align: center;
/* Safari and Chrome */
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
/* W3C */
display: box;
box-pack: center;
box-align: center;
}
#inner {
width: 50%;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Según su usabilidad también puede utilizar las box-orient, box-flex, box-direction
propiedades.
El modelo de caja moderno con Flexbox
#outer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
Lea más sobre cómo centrar los elementos secundarios
Módulo de modelo de caja CSS Nivel 3
Modelo de caja (CSS2)
alineación de caja en MDN
Y esto explica por qué el modelo de caja es el mejor enfoque :
- ¿Por qué se considera mejor el modelo de caja del W3C?
#centered {
position: absolute;
left: 50%;
margin-left: -100px;
}
<div id="outer" style="width:200px">
<div id="centered">Foo foo</div>
</div>
Asegúrese de que el elemento principal esté posicionado , es decir, relativo, fijo, absoluto o fijo.
Si no conoce el ancho de su div, puede usarlo transform:translateX(-50%);
en lugar del margen negativo.
Con CSS calc() , el código puede volverse aún más simple:
.centered {
width: 200px;
position: absolute;
left: calc(50% - 100px);
}
El principio sigue siendo el mismo; Coloque el artículo en el medio y compense el ancho.