Acerca de este problema de CSS
La propiedad align-items controla cómo se alinean los elementos flex o grid a lo largo del eje transversal de su contenedor. Aunque muchas propiedades CSS aceptan auto como valor, align-items no es una de ellas. La especificación CSS define un conjunto específico de valores aceptados, y usar auto hará que la declaración sea ignorada por los navegadores, rompiendo potencialmente tu layout previsto.
Este error a menudo surge de la confusión con la propiedad relacionada align-self, que sí acepta auto como su valor por defecto. Cuando align-self se establece como auto, defiere al valor de align-items del contenedor padre. Sin embargo, align-items en sí no tiene tal mecanismo de delegación — es la propiedad que establece la alineación por defecto para todos los elementos en el contenedor.
Los valores válidos para align-items incluyen:
-
normal— se comporta comostretchen contenedores flex y tiene comportamiento dependiente del contexto en otros modos de layout. -
stretch— los elementos se estiran para llenar el contenedor a lo largo del eje transversal (el comportamiento por defecto en flexbox). -
center— los elementos se centran a lo largo del eje transversal. -
flex-start/start— los elementos se alinean al inicio del eje transversal. -
flex-end/end— los elementos se alinean al final del eje transversal. -
baseline/first baseline/last baseline— los elementos se alinean basándose en sus líneas base de texto. -
self-start/self-end— los elementos se alinean basándose en su propio modo de escritura.
Si pretendías el comportamiento por defecto, usa stretch (para flexbox) o normal. Si estabas intentando resetear la propiedad, usa initial, unset o revert en lugar de auto.
Ejemplos
Incorrecto: usar auto como valor
<div style="display: flex; align-items: auto;">
<p>Elemento uno</p>
<p>Elemento dos</p>
</div>
Esto desencadena el error de validación porque auto no es un valor reconocido para align-items.
Corregido: usar stretch para el comportamiento por defecto de flexbox
<div style="display: flex; align-items: stretch;">
<p>Elemento uno</p>
<p>Elemento dos</p>
</div>
Corregido: usar center para centrar elementos
<div style="display: flex; align-items: center;">
<p>Elemento uno</p>
<p>Elemento dos</p>
</div>
Corregido: usar flex-start para alinear elementos arriba
<div style="display: flex; align-items: flex-start;">
<p>Elemento uno</p>
<p>Elemento dos</p>
</div>
Uso correcto de auto con align-self
Si tu intención era permitir que un elemento hijo específico defiera a la alineación de su padre, usa align-self: auto en el elemento hijo en su lugar:
<div style="display: flex; align-items: center;">
<p>Elemento centrado</p>
<p style="align-self: auto;">También centrado (defiere al padre)</p>
<p style="align-self: flex-end;">Alineado al final</p>
</div>
Aquí, align-self: auto es válido en elementos individuales y les dice que hereden el valor de align-items del contenedor.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: