35 puntos por xguru 2024-09-03 | 29 comentarios | Compartir por WhatsApp
  • CSS por fin incorpora align-content al layout por defecto, permitiendo el alineado vertical con una sola propiedad de CSS
    • Versiones compatibles: Chrome 123, Firefox 125, Safari 17.4
  • Hasta ahora, align-content no funcionaba en el layout básico (flow), así que había que cambiar a flexbox o grid
    • En 2024, los navegadores finalmente implementaron align-content en el layout Flow
    • Ahora se puede alinear usando solo 1 propiedad de CSS, sin flexbox ni grid
    • Por lo tanto, ya no hace falta envolver el contenido en un div

Historia del alineado vertical

  • Durante mucho tiempo no hubo una forma simple de hacer alineado vertical en el navegador

Método 1: celda de tabla

  • Sanity (¿estamos bien de la cabeza?): ★★★☆☆
  • Hay 4 layouts principales: flow (predeterminado), table, flexbox y grid, y la alineación del contenido cambia según el layout
  • Como flexbox y grid se agregaron más tarde, al principio se usaba table
<div style="display: table;">  
  <div style="display: table-cell; vertical-align: middle;">  
    Content.  
  </div>  
</div>  

Método 2: posición absoluta

  • Sanity: ☆☆☆☆☆
  • Como el layout flow no ayudaba, se buscaba una vuelta usando posición absoluta
<div style="position: relative;">  
  <div style="position: absolute; top: 50%; transform: translateY(-50%);">  
    Content.  
  </div>  
</div>  

Método 3: contenido inline

  • Sanity: ☆☆☆☆☆
  • El layout flow no ayuda con la alineación del contenido. Sí permite alineado vertical dentro de una línea
  • Entonces, ¿qué pasa si hacemos una línea del alto del contenedor?
<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;  
}  
  • Es fácil que esto termine poniéndose raro

Método 4: flexbox de una sola línea

  • Sanity: ★★★☆☆
  • Flexbox empezó a usarse de forma generalizada 20 años después del nacimiento de la web
  • En modo de una sola línea (el predeterminado), la línea ocupa el espacio vertical y align-items alinea los elementos dentro de esa línea
<div style="display: flex; align-items: center;">  
  <div>Content.</div>  
</div>  
  • O también se puede poner la línea en vertical y usar justify-content para alinear los elementos
<div style="display: flex; flex-flow: column; justify-content: center;">  
  <div>Content.</div>  
</div>  

Método 5: flexbox de varias líneas

  • Sanity: ★★★☆☆
  • En flexbox de varias líneas, se pueden alinear las líneas con align-content
<div style="display: flex; flex-flow: row wrap; align-content: center;">  
  <div>Content.</div>  
</div>  

Método 6: contenido grid

  • Sanity: ★★★★☆
  • Como grid apareció todavía después, la alineación se volvió un poco más simple
<div style="display: grid; align-content: center;">  
  <div>Content.</div>  
</div>  

Método 7: celda grid

  • Sanity: ★★★★☆
  • align-content alinea las celdas dentro del contenedor, y align-items alinea el contenido dentro de las celdas
<div style="display: grid; align-items: center;">  
  <div>Content.</div>  
</div>  

Método 8: márgenes auto

  • Sanity: ★★★☆☆
  • En el layout flow, margin:auto centra horizontalmente pero no verticalmente
  • Flexbox y grid no comparten esa inconsistencia
<div style="display: grid;">  
  <div style="margin-block: auto;">  
    Content.  
  </div>  
</div>  

Método 9: este artículo en 2024

  • Sanity: ★★★★★
  • Los navegadores debieron haber agregado esto desde el principio
<div style="align-content: center;">  
  <code>align-content</code> just works!  
</div>  

29 comentarios

 
tobesimple7 2024-10-17

Oh~ qué buena función~~

 
seunggi 2024-09-12

Lo más difícil de la informática: centrar algo

https://tonsky.me/blog/centering/

 
mongsilsushi 2024-09-06

¡Por fin!

 
sgwanlee 2024-09-04

¿Ahora CSS se volvió demasiado fácil? jajaja

 
jwh926 2024-09-04

🙏🏻🙏🏻🙏🏻🙏🏻

 
rulerwithcss 2024-09-04

oh por Dios, borde de queso

 
shpkc 2024-09-04

¡Por fin!

 
halfenif 2024-09-04

¡Llegó tarde! ¡Llegó tarde! ¡Llegó tarde!

 
uoayop 2024-09-03

Por fin

 
aer0700 2024-09-03

Qué alegría

 
koyokr 2024-09-03

jajaja

 
nemorize 2024-09-03

a-men

 
carnoxen 2024-09-03

¿Existe el riesgo de que los sitios web existentes queden con la estructura desordenada debido a este cambio?

 
bluekai17 2024-09-10

A mí también me da curiosidad esta parte.

 
ng0301 2024-09-03

¡Por fin!

 
yatmak 2024-09-03

Por fin ha llegado la era de la Web 3.0.

 
plaaat0102 2024-09-03

Los comentarios están llenos de alegría jajajaja..

 
godppun 2024-09-03

De verdad, por fin...

 
kangkung9225 2024-09-03

Oh...? ¿Hay que hacerlo? jaja..

 
[Este comentario fue ocultado.]
 
qurare 2024-09-03

Por fin

 
savvykang 2024-09-03

¡GUA!

 
joyfui 2024-09-03

¡Guau!!!

 
mkyoon 2024-09-03

¡Qué felicidad!

 
wedding 2024-09-03

Como desarrollo principalmente apps, cuando ayudo con desarrollo web buscaba sin pensarlo y usaba flexbox, asumiendo que eso era centrado... pero resulta que hasta ahora no existía. Qué impacto.....

 
illiil1lii 2024-09-03

¡Muya-ho!

 
huiya 2024-09-03

¡Por fin!

 
tjddnjsjo 2024-09-03

¡Qué alegría!

 
pkj3186 2024-09-03

¡Por fin!