Propiedades lógicas en CSS: uso y aplicación práctica

Clase 11 de 28Curso Profesional de CSS Grid Layout

Contenido del curso

Resumen

Diseñar sitios web que funcionen para cualquier idioma y dirección de escritura ya no es opcional. Las propiedades lógicas de CSS reemplazan las clásicas propiedades físicas como margin-top o padding-left por un sistema flexible que se adapta automáticamente al modo de escritura del usuario. Entender este cambio es fundamental para crear experiencias accesibles a nivel global.

¿Cómo funcionan las propiedades lógicas en CSS?

Las propiedades físicas que hemos usado durante años (top, bottom, left, right) dependen de una dirección fija. Con las propiedades lógicas, el enfoque cambia: ya no hablamos de arriba o abajo, sino de dónde empieza y dónde termina el flujo del contenido.

La estructura de una propiedad lógica sigue este patrón:

  • Nombre de la propiedad: margin, padding, border.
  • Eje: block (vertical, de arriba hacia abajo) o inline (horizontal, de izquierda a derecha).
  • Posición: start (inicio) o end (final).

Por ejemplo, margin-top se convierte en margin-block-start [01:10]. ¿Por qué? Porque en el flujo por defecto, el eje de bloque va de arriba hacia abajo, y top representa el inicio de ese eje.

¿Cuál es la diferencia entre el modelo de caja físico y el lógico?

El modelo de caja tradicional tiene contenido, padding, borde y margin, con propiedades como padding-left o border-top. El modelo de caja lógico mantiene la misma estructura, pero reemplaza las referencias direccionales [02:00]:

  • margin-topmargin-block-start.
  • margin-bottommargin-block-end.
  • margin-leftmargin-inline-start.
  • margin-rightmargin-inline-end.

Las propiedades en el eje de bloque (block) corresponden a las verticales: top y bottom. Las del eje en línea (inline) corresponden a las horizontales: left y right [03:05]. Al cambiar el modo de escritura, estas propiedades se reposicionan automáticamente sin tocar el CSS.

¿Cómo se aplican a margin, padding y border?

Para margin y padding, la conversión es directa. Cada propiedad física tiene su equivalente lógico siguiendo el patrón de eje más posición [04:15].

El padding funciona igual. padding-right se transforma en padding-inline-end. Al visualizarlo con un borde punteado, se observa cómo el espacio interno cambia de posición según el modo de escritura [05:00].

¿Por qué los bordes lógicos son más complejos?

Los bordes añaden una capa extra de complejidad porque cada borde tiene tres subpropiedades: tamaño (size), estilo (style) y color [05:50]. Esto genera nombres más largos:

  • border-top-widthborder-block-start-width.
  • border-top-styleborder-block-start-style.
  • border-top-colorborder-block-start-color.

La comunidad de CSS reconoce que estas propiedades resultan extensas y de hecho invita a contribuir con propuestas para simplificarlas en la documentación oficial [06:30].

¿Qué pasa con las posiciones y la compatibilidad?

Para las propiedades de posicionamiento, top, left, right y bottom se reemplazan por la palabra clave inset, seguida de block o inline y start o end [07:20]. Así, top equivale a inset-block-start e right a inset-inline-end.

Antes de implementar propiedades lógicas en producción, es importante verificar la compatibilidad con navegadores. La herramienta Can I Use muestra que al momento de la grabación, la compatibilidad alcanza el 92.49% [07:45]. Esto significa que la gran mayoría de navegadores modernos las soportan, aunque conviene evaluar el público objetivo del proyecto.

¿Por qué adoptar propiedades lógicas hoy?

El beneficio principal es la accesibilidad global. Un sitio construido con propiedades lógicas se adapta automáticamente cuando alguien lo visita desde un contexto con escritura de derecha a izquierda o vertical [08:10]. Ya no se trata solo de cómo se ve para nosotros, sino de cómo lo experimenta cualquier persona en el mundo.

Un ejercicio práctico recomendado es cambiar el modo de escritura de un proyecto existente y observar cómo se comportan los márgenes, el padding y los bordes. Eso permite detectar rápidamente qué propiedades físicas necesitan actualizarse.

Ahora cuéntanos: ¿cuál sería el equivalente lógico de border-top? Las opciones son border-inline-start, border-block-start o border-top-start. Comparte tu respuesta en los comentarios.