Alinhamentos

Existem pelo menos 2 maneiras bem simples de alinhar elementos na horizontal, que é margin:auto e text-align:center adicionado ao elemento parent. Porém mesmo na horizontal em alguns casos isso não é o suficente. E na vertical margin:auto superior e inferior mesmo dentro de um elemento com posição relativa e altura fixa, só vai alinhar se o elemento parent seja display:flex.

<div style="margin: 0 auto">Elemento alinhado na horizontal</div>

<div style="text-align: center;">
    <div style="text-align: left">Elemento alinhado na horizontal</div>
</div>

<div style="display: flex;">
    <div style="margin: auto 0">Elemento alinhado na vertical</div>
</div>

<div style="display: flex;">
    <div style="margin: auto auto">Elemento alinhado na vertical e horizontal</div>
</div>

Quando os exemplos mais simples acima não funcionarem, ou para não arriscar que alguma coisa mude no código interferindo no alinhamento dos elementos, existem outras maneira de "forçar" que esses elementos se alinhem, e aqui eu apresento 3 alternativas.

flex_: as declarações precisam estar no elemento parent do elemento a ser alinhado.
align_: as declarações precisam estar em um elemento filho de um elemento parent com posição relativa.
centre_: é recomendado que o mesmo seja filho de um elemento parent com posição relativa. Este está declarado com posição relativa, porém funciona se for absoluta.

Alinhamento horizontal

flex_x
Comportamento do texto
<div class="flex_x">
    <div>Comportamento do texto</div>
</div>
.flex_x { 
    display: flex;
    justify-content: center;
}
align_x
Comportamento do texto
<div><!-- position: relative -->
    <div class="align_x">Comportamento do texto</div>
</div>
.align_x {
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
}
centre_x
Comportamento do texto
<div>
    <div class="centre_x">Comportamento do texto</div>
</div>
.centre_x {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}

Vertical

flex_y
Comportamento do texto
<div class="flex_y">
    <div>Comportamento do texto</div>
</div>
.flex_y { 
    display: flex;
    align-items: center;
}
align_y
Comportamento do texto
<div><!-- position: relative -->
    <div class="align_y">Comportamento do texto</div>
</div>
.align_y {
    position: absolute;
    top: 0;
    bottom: 0;
    margin: auto 0;
}
centre_y
Comportamento do texto
<div>
    <div class="centre_y">Comportamento do texto</div>
</div>
.centre_y {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}

Horizontal e Vertical

flex_xy
Comportamento do texto
<div class="flex_xy">
    <div>Comportamento do texto</div>
</div>
.flex_xy { 
    display: flex;
    align-items: center; /* alinha na vertical */
    justify-content: center; /* alinha na horizontal */
}
align_xy
Comportamento do texto
<div><!-- position: relative -->
    <div class="align_xy">Comportamento do texto</div>
</div>
.align_xy {
    position: absolute;
    inset: 0;
    margin: auto;
}
centre_xy
Comportamento do texto

<div>
    <div class="centre_xy">Comportamento do texto</div>
</div>
.centre_xy {
    position: relative;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* -------------------------------------------------
    horizontal
*/
.flex_x { 
    display: flex;
    justify-content: center;
}
.align_x {
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
}
.centre_x {
    position: relative;
    left: 50%;
    transform: translateX(-50%);
}
/* -------------------------------------------------
    vertical
*/
.flex_y { 
    display: flex;
    align-items: center;
}
.align_y {
    position: absolute;
    top: 0;
    bottom: 0;
    margin: auto 0;
}
.centre_y {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}
/* -------------------------------------------------
    horizontal e vertical
*/
.flex_xy { 
    display: flex;
    align-items: center; /* alinha na vertical */
    justify-content: center; /* alinha na horizontal */
}
.align_xy {
    position: absolute;
    inset: 0;
    margin: auto;
}
.centre_xy {
    position: relative;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}