Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.

View in English Always switch to English

Centrar un elemento

En esta receta verás cómo centrar una caja dentro de otra con flexbox y con grid, tanto en horizontal como en vertical.

Un elemento centrado dentro de una caja más grande

Requisitos

Colocar un elemento en el centro de otra caja, tanto en horizontal como en vertical.

Receta

Haz clic en "Play" en los bloques de código de abajo para editar el ejemplo en el MDN Playground:

html
<div class="container">
  <div class="item">¡Estoy centrado!</div>
</div>
css
.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}

Usar flexbox

Para centrar una caja dentro de otra, primero convierte la caja contenedora en un contenedor flexible estableciendo su propiedad display en flex. Después, establece align-items en center para centrar en vertical (en el eje de bloque) y justify-content en center para centrar en horizontal (en el eje en línea). ¡Y eso es todo lo que hace falta para centrar una caja dentro de otra!

HTML

html
<div class="container">
  <div class="item">¡Estoy centrado!</div>
</div>

CSS

css
div {
  border: solid 3px;
  padding: 1em;
  max-width: 75%;
}

.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  height: 8em;
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  display: flex;
  align-items: center;
  justify-content: center;
}

Establecemos una altura para el contenedor para demostrar que el elemento interior está realmente centrado en vertical dentro del contenedor.

Resultado

En lugar de aplicar align-items: center; al contenedor, también puedes centrar en vertical el elemento interior estableciendo align-self en center en el propio elemento interior.

Usar grid

Otro método que puedes usar para centrar una caja dentro de otra es convertir primero la caja contenedora en un contenedor de cuadrícula y, después, establecer su propiedad place-items en center para centrar sus elementos tanto en el eje de bloque como en el eje en línea.

HTML

html
<div class="container">
  <div class="item">¡Estoy centrado!</div>
</div>

CSS

css
div {
  border: solid 3px;
  padding: 1em;
  max-width: 75%;
}

.item {
  border: 2px solid rgb(95 97 110);
  border-radius: 0.5em;
  padding: 20px;
  width: 10em;
}

.container {
  height: 8em;
  border: 2px solid rgb(75 70 74);
  border-radius: 0.5em;
  font: 1.2em sans-serif;

  display: grid;
  place-items: center;
}

Resultado

En lugar de aplicar place-items: center; al contenedor, puedes lograr el mismo centrado estableciendo place-content: center; en el contenedor, o aplicando place-self: center o margin: auto; en el propio elemento interior.

Recursos en MDN