Hay distintos métodos para lograrlo, mira este articulo:
https://escss.blogspot.com/2012/05/c...6-maneras.html
El más recomendado es con flexbox
Código CSS:
Ver original.padre
{
display: flex;
min-height: 100vh;
margin: 0;
}
.hijo
{
margin: auto;
}
Y el que me gusta mucho usar es con transform:
Código CSS:
Ver original.padre
{
position:relative;
}
.hijo
{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Pero no funciona para todos lo casos (y créeme son muchos) por lo que lo mejor es que conozcas todas las formas posibles y cual se adapta mejor a las necesidades de tu proyecto.