Documentação de Alinhamento Vertical em CSS

Introdução

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.

Métodos de Alinhamento Vertical

1. Usando 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.

2. Usando Flexbox (Recomendado para layouts modernos)

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:

3. Usando Grid CSS

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 */
}

4. Usando position e transform

Técnica útil para centralização absoluta:

.element {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

5. Usando line-height para texto

Para elementos de linha única, você pode definir line-height igual à altura:

.button {
  height: 40px;
  line-height: 40px; /* Centraliza o texto verticalmente */
}

6. Usando tabelas (método legado)

.container {
  display: table;
}

.child {
  display: table-cell;
  vertical-align: middle;
}

Alinhamento Vertical em Contextos Específicos

Alinhar imagens com texto

img {
  vertical-align: middle; /* Alinha a imagem com o texto ao lado */
}

Centralizar um elemento na página inteira

body {
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
}

Alinhar vários itens em um container

.container {
  display: flex;
  flex-direction: column;
  justify-content: space-between; /* Distribui espaço entre itens */
  height: 300px;
}

Técnicas Avançadas

Alinhamento com margin: auto em Flexbox

.container {
  display: flex;
  min-height: 100vh;
}

.child {
  margin: auto; /* Centraliza vertical e horizontalmente */
}

Usando calc() para posicionamento preciso

.element {
  position: absolute;
  top: calc(50% - 20px); /* 20px é metade da altura do elemento */
}

Considerações sobre Responsividade

Compatibilidade entre Navegadores

Conclusão

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:

  1. Suporte necessário de navegadores
  2. Complexidade do layout
  3. Manutenibilidade do código