Centralizando verticalmente com CSS

Centralizando verticalmente com CSS

Overview

Mergulhe conosco na arte de posicionar elementos em uma página web com um toque de magia CSS. Em meio a desafios e pesadelos comuns no design de interfaces, encontramos uma luz no fim do túnel para o temido alinhamento vertical.

2024 update!

Então, já estamos em 2024 e já passou da hora de atualizar este post. Aqui está um ajuste moderno para centralizar verticalmente um div usando flexbox, que é eficiente e amplamente suportado. Este método garante que seu conteúdo seja perfeitamente centralizado, tanto vertical quanto horizontalmente, dentro de seu contêiner. Aplique as seguintes propriedades CSS ao seu contêiner:

display: flex;
align-items: center;
justify-content: center;

Essa abordagem oferece uma solução mais limpa e robusta em comparação com os métodos tradicionais, adaptando-se perfeitamente em diferentes tamanhos de tela e mudanças de conteúdo.

Abaixo está um exeplo desta abordagem em prática:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox Centering Demo</title>
    <style>
        .centered-container {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100vh;
            background-color: salmon;
        }
    </style>
</head>
<body>
    <div class="centered-container">
        <p>Hello, world! I'm perfectly centered.</p>
    </div>
</body>
</html>

Neste exemplo, adicionei height ao container para demonstrar o funcionamento. Caso contrário, o container teria a mesma altura do conteúdo.

Espero ter ajudado!

Post original (2017)

Posicionar elementos em uma página utilizando CSS é , em grande parte, o material utilizado para criar pesadelos. Especialmente se a sua tarefa é fazer alinhamento vertical…

Existe uma saída utilizando apenas CSS puro, veja o fonte abaixo:

position: relative; 
top: 50%; 
transform: translateY(-50%);

Talvez o código acima precise de um pouco de ajuste, mas já é algo bem simples de se fazer.

Traduções: