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:

1display: flex;
2align-items: center;
3justify-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:

 1<!DOCTYPE html>
 2<html lang="en">
 3<head>
 4    <meta charset="UTF-8">
 5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6    <title>Flexbox Centering Demo</title>
 7    <style>
 8        .centered-container {
 9            display: flex;
10            align-items: center;
11            justify-content: center;
12            height: 100vh;
13            background-color: salmon;
14        }
15    </style>
16</head>
17<body>
18    <div class="centered-container">
19        <p>Hello, world! I'm perfectly centered.</p>
20    </div>
21</body>
22</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:

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

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

Traduções: