O alinhamento vertical em CSS pode ser desafiador para desenvolvedores, especialmente iniciantes. Esta documentação aborda várias técnicas para alinhar elementos verticalmente, complementando as informações do artigo original do LogRocket.
vertical-align
A propriedade vertical-align
é usada principalmente para:
img {
vertical-align: middle; /* top | middle | bottom | baseline */
}
Limitações: Não funciona diretamente para alinhar elementos block-level.
Flexbox é a maneira mais moderna e eficiente para alinhamento vertical e horizontal.
.container {
display: flex;
align-items: center; /* Alinha verticalmente */
justify-content: center; /* Alinha horizontalmente */
}
Variações:
align-items: flex-start
- alinha no topoalign-items: flex-end
- alinha na basealign-items: stretch
- estica para preencher (padrão)CSS Grid também oferece excelentes opções de alinhamento:
.container {
display: grid;
place-items: center; /* Centraliza vertical e horizontalmente */
}
Ou separadamente:
.container {
display: grid;
align-items: center; /* Vertical */
justify-items: center; /* Horizontal */
}
position
e transform
Técnica útil para centralização absoluta:
.element {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
line-height
para textoPara elementos de linha única, você pode definir line-height
igual à altura:
.button {
height: 40px;
line-height: 40px; /* Centraliza o texto verticalmente */
}
.container {
display: table;
}
.child {
display: table-cell;
vertical-align: middle;
}
img {
vertical-align: middle; /* Alinha a imagem com o texto ao lado */
}
body {
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
margin: 0;
}
.container {
display: flex;
flex-direction: column;
justify-content: space-between; /* Distribui espaço entre itens */
height: 300px;
}
margin: auto
em Flexbox.container {
display: flex;
min-height: 100vh;
}
.child {
margin: auto; /* Centraliza vertical e horizontalmente */
}
calc()
para posicionamento preciso.element {
position: absolute;
top: calc(50% - 20px); /* 20px é metade da altura do elemento */
}
vh
, %
ou em
Para layouts modernos, Flexbox e Grid CSS são as abordagens mais recomendadas para alinhamento vertical. Técnicas
mais antigas como vertical-align
e métodos baseados em tabelas ainda têm seu lugar em contextos
específicos, mas geralmente são menos flexíveis.
Escolha o método baseado em: