En Bootstrap 4, uno debería usar la text-center
clase para alinear bloques en línea .
NOTA: si se text-align:center;
define en una clase personalizada que aplique a su elemento principal, funcionará independientemente de la versión de Bootstrap que esté utilizando. Y eso es exactamente lo que se .text-center
aplica.
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<div class="container">
<div class="row">
<div class="col text-center">
<button class="btn btn-default">Centered button</button>
</div>
</div>
</div>
Si el contenido a centrar es block o flex (no inline-
), se podría usar flexbox para centrarlo:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<div class="d-flex justify-content-center">
<button class="btn btn-default">Centered button</button>
</div>
... que se aplica display: flex; justify-content: center
a los padres.
Nota: no use en .row.justify-content-center
lugar de .d-flex.justify-content-center
, ya que .row
aplica márgenes negativos en ciertos intervalos de respuesta, lo que da como resultado barras de desplazamiento horizontales inesperadas (a menos que .row
sea un hijo directo de .container
, que aplica relleno lateral para contrarrestar el margen negativo, en los intervalos de respuesta correctos). Si debe usar .row
, por cualquier razón, anule su margen y relleno .m-0.p-0
, en cuyo caso terminará con prácticamente los mismos estilos que .d-flex
.
Nota importante: la segunda solución es problemática cuando el contenido centrado (el botón) excede el ancho del padre ( .d-flex
), especialmente cuando el padre tiene ancho de ventana gráfica, específicamente porque hace que sea imposible desplazarse horizontalmente hasta el inicio del contenido (izquierda- más).
Por lo tanto, no lo use cuando el contenido que se va a centrar podría ser más ancho que el ancho principal disponible y todo el contenido debería ser accesible.