- O CSS finalmente adicionou
align-content ao layout padrão, tornando possível o alinhamento vertical com uma única propriedade CSS
- Versões com suporte: Chrome 123, Firefox 125, Safari 17.4
- Atualmente,
align-content não funciona no layout padrão (flow), então era preciso mudar para flexbox ou grid
- Em 2024, os navegadores finalmente implementaram
align-content no layout Flow
- Agora, é possível alinhar usando apenas 1 propriedade CSS, sem flexbox nem grid
- Portanto, não é mais necessário envolver o conteúdo em uma
div
História da centralização vertical
- Durante muito tempo, não houve uma forma simples de fazer alinhamento vertical no navegador
Método 1: célula de tabela
- Sanidade (fala sério?): ★★★☆☆
- Existem 4 layouts principais: flow (padrão), table, flexbox e grid, e o alinhamento de conteúdo varia conforme o layout
- Como flexbox e grid foram adicionados mais tarde, no começo usava-se table
<div style="display: table;">
<div style="display: table-cell; vertical-align: middle;">
Content.
</div>
</div>
Método 2: posicionamento absoluto
- Sanidade: ☆☆☆☆☆
- Como o layout flow não ajudava, fazia-se uma gambiarra com posicionamento absoluto
<div style="position: relative;">
<div style="position: absolute; top: 50%; transform: translateY(-50%);">
Content.
</div>
</div>
Método 3: conteúdo inline
- Sanidade: ☆☆☆☆☆
- O layout flow não ajuda no alinhamento de conteúdo. Ele permite alinhamento vertical dentro de uma única linha
- Então, e se criarmos uma linha com a mesma altura do contêiner?
<div class="container">
::before
<div class="content">Content.</div>
</div>
.container::before {
content: '';
height: 100%;
display: inline-block;
vertical-align: middle;
}
.content {
display: inline-block;
vertical-align: middle;
}
- Tem tudo para ficar esquisito
Método 4: flexbox de uma linha
- Sanidade: ★★★☆☆
- O flexbox só passou a ser amplamente usado mais de 20 anos depois do início da web
- No modo de uma linha (padrão), a linha ocupa o espaço vertical e
align-items alinha os itens dentro dela
<div style="display: flex; align-items: center;">
<div>Content.</div>
</div>
- Ou então tornar a linha vertical e usar
justify-content para alinhar os itens
<div style="display: flex; flex-flow: column; justify-content: center;">
<div>Content.</div>
</div>
Método 5: flexbox de várias linhas
- Sanidade: ★★★☆☆
- Em flexbox com várias linhas, é possível alinhar as linhas com
align-content
<div style="display: flex; flex-flow: row wrap; align-content: center;">
<div>Content.</div>
</div>
Método 6: conteúdo em grid
- Sanidade: ★★★★☆
- Como o grid surgiu ainda mais tarde, o alinhamento ficou um pouco mais simples
<div style="display: grid; align-content: center;">
<div>Content.</div>
</div>
Método 7: célula de grid
- Sanidade: ★★★★☆
align-content alinha a célula no contêiner, e align-items alinha o conteúdo dentro da célula
<div style="display: grid; align-items: center;">
<div>Content.</div>
</div>
Método 8: margem auto
- Sanidade: ★★★☆☆
- No layout flow,
margin:auto centraliza horizontalmente, mas não verticalmente
- Flexbox e grid não compartilham essa inconsistência
<div style="display: grid;">
<div style="margin-block: auto;">
Content.
</div>
</div>
Método 9: este post de 2024
- Sanidade: ★★★★★
- Era algo que os navegadores já deveriam ter adicionado desde o começo
<div style="align-content: center;">
<code>align-content</code> just works!
</div>
29 comentários
Uau~ que recurso é esse~~
A coisa mais difícil na ciência da computação: centralizar no meio
https://tonsky.me/blog/centering/
Finalmente!
o CSS ficou fácil demais, né? kkkkk
🙏🏻🙏🏻🙏🏻🙏🏻
meu Deus, borda recheada de queijo
Finalmente!
Tá atrasado! Tá atrasado! Tá atrasado!
Finalmente.
Que alegria
kkkk
a-men
Os sites existentes correm o risco de ter a estrutura bagunçada por causa dessa mudança?
Eu também estou curioso sobre isso.
Finalmente!
Finalmente, chegamos à era da Web 3.0.
Os comentários estão cheios de diversão kkkkk...
Sério, finalmente...
Ah...? Será que tenho que fazer isso mesmo? haha..
Finalmente
UAAAA!!!
Uau!!!
Tô felizão!
Como trabalho principalmente com desenvolvimento de apps, quando ia ajudar em desenvolvimento web eu pesquisava sem pensar muito e usava o flexbox que aparecia, achando que aquilo já era o tal do alinhamento central... mas pelo visto isso não existia até agora. Chocante.....
Massa demais!
Finalmente!
Que maravilha!
Finalmente!