Skip to main content
Validación HTML

CSS: “align-items”: “auto” no es un valor válido para “align-items”.

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 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 como stretch en 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.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.