Ajuste de texto en CSS: balance

CSS llega a CSS, una técnica de tipografía clásica de creación manual de saltos de línea para bloques de texto equilibrados.

Adam Argyle
Adam Argyle

El valor balance para text-wrap forma parte del nivel de texto 4 de CSS. Mira los ejemplos de esta publicación y descubre cómo esta única línea de CSS puede mejorar tus diseños de texto de forma masiva.

Navegadores compatibles

  • 114
  • 114
  • 121

Origen

Prueba una demostración

Sin text-wrap: balance, los diseñadores, editores de contenido y publicadores tienen pocas herramientas para cambiar la forma en que se equilibran las líneas. Las mejores opciones disponibles son usar <wbr> o &shy; para ayudar a guiar los diseños de texto a decisiones más inteligentes sobre dónde dividir las líneas y las palabras.

Como desarrollador, no sabes el tamaño final, el tamaño de fuente o incluso el idioma de un título o párrafo. Todas las variables necesarias para un tratamiento eficaz y estético del ajuste de texto se encuentran en el navegador. Es por eso que vemos que el título se ajusta como en la siguiente imagen:

El encabezado se destaca con Herramientas para desarrolladores, abarca todo el ancho de su espacio intercalado y tiene dos palabras pendientes en la segunda línea.
Probar una demostración
.unbalanced {
  max-inline-size: 50ch;
}

Con text-wrap: balance del Texto de CSS 4, puedes solicitar al navegador que encuentre la mejor solución de ajuste de línea equilibrada para el texto. El navegador conoce todos los factores, como el tamaño de la fuente, el idioma y el área asignada. Hoy, los resultados del ajuste de texto equilibrado del navegador tienen el siguiente aspecto:

El encabezado se destaca como en las Herramientas para desarrolladores anteriores; esta vez no se extiende a todo el ancho. Inicia una nueva línea antes del final y, por lo tanto, es un bloque de texto equilibrado.
Probar una demostración
.balanced {
  max-inline-size: 50ch;
  text-wrap: balance;
}

Es útil verlos uno al lado del otro, quietos y sin superposición de información de depuración.

Los dos ejemplos anteriores se muestran juntos; uno está marcado como desequilibrado y el otro como equilibrado.

Tus ojos deberían estar mucho más satisfechos con el bloque de texto equilibrado. Capta mejor la atención y es más fácil de leer en general.

Encontrar el equilibrio

Los titulares son lo primero que ven los lectores; deben ser atractivos visualmente y fáciles de leer. Esto llama la atención del usuario y proporciona una sensación de calidad y seguridad. Una buena tipografía les brinda confianza a los lectores y los anima a seguir leyendo.

Tradicionalmente, esta tarea se realizaba a mano o de forma óptica, ya que el diseñador que equilibra el texto quiere complacer a la vista, no a las matemáticas. Este tema a menudo se conoce como alineación métrica frente a alineación óptica. Para publicaciones grandes como el New York Times, el equilibrio del título es un detalle muy importante de la experiencia del usuario.

Prueba una demostración

Equilibrar el texto en la tipografía se remonta a los primeros días de la impresión, cuando las impresoras colocaban las letras a mano. A medida que las herramientas y las técnicas evolucionaron, también lo hicieron los resultados. En la actualidad, los diseñadores tienen color, peso, tamaño, etc., para equilibrar el texto en sus diseños.

Sin embargo, en la Web, hay menos controles disponibles porque el documento cambia de tamaño y color según los usuarios. text-wrap: balance lleva el arte de equilibrar el texto en la Web de forma automatizada, sobre la base del trabajo y las tradiciones de los diseñadores de la industria de la impresión.

Equilibrar los títulos

Este será, y debería ser, el caso de uso principal de text-wrap: balance. Dibuja el ojo con el tamaño y haz que sea simétrico y legible para que el ojo lo lea. Configura todos los títulos con ajuste de texto equilibrado con el siguiente CSS:

h1,h2,h3,h4,h5,h6 {
  text-wrap: balance;
}

Es posible que solo aplicar este estilo no te proporcione los resultados que esperas, ya que el texto debe ajustarse y, por lo tanto, aplicar una longitud de línea máxima desde algún lugar. Verás que se configura una max-inline-size en los ejemplos de esta publicación. Este estilo es similar a max-width, pero se puede establecer una vez para cualquier idioma.

Limitaciones

La tarea de equilibrar el texto no es libre. El navegador debe repetir iteraciones para descubrir la mejor solución de unión equilibrada. Este costo de rendimiento se mitiga con una regla, solo funciona para seis líneas unidas o menos.

Prueba una demostración

Consideraciones sobre el rendimiento

No es una buena idea aplicar el equilibrio de envoltorio de texto a todo el diseño. Es una solicitud desperdiciada debido al límite de seis líneas y puede afectar la velocidad de renderización de la página.

Qué no debes hacer
* {
  text-wrap: balance;
}
CONSIDERA
h1, h2, h3, h4, h5, h6, blockquote {
  text-wrap: balance;
}

Una gran ventaja para esta función es que no necesitas esperar ni controlar el tiempo de ajuste de texto con la carga de fuentes, como sucede actualmente con JavaScript. El navegador se encarga de eso.

Interacciones con la propiedad white-space

El balanceo de texto compite con la propiedad white-space porque uno pide no ninguna unión y el otro, solicita un ajuste equilibrado. Para solucionar este problema, anula la configuración de la propiedad de espacio en blanco y, luego, la unión equilibrada puede volver a aplicarse.

.balanced {
  white-space: unset;
  text-wrap: balance;
}

El balanceo no cambiará el tamaño intercalado del elemento

Algunas de las soluciones de JavaScript para la unión de texto equilibrada tienen una ventaja, ya que cambian el max-width del elemento contenedor. Esto tiene una ventaja adicional de "se une" al bloque equilibrado. text-wrap: balance no tiene este efecto y se puede ver en este ejemplo:

El encabezado se destaca como en las Herramientas para desarrolladores anteriores; esta vez no se extiende a todo el ancho. Inicia una nueva línea antes del final y, por lo tanto, es un bloque de texto equilibrado.

¿Ves que el ancho que se muestra en Herramientas para desarrolladores tiene mucho espacio adicional al final? Esto se debe a que es solo un estilo de unión, no un estilo que cambia de tamaño. Debido a esto, hay algunas situaciones en las que text-wrap: balance no es tan bueno, al menos en mi opinión. Por ejemplo, los encabezados dentro de una tarjeta (o cualquier contenedor con bordes o sombras).

El ajuste de texto equilibrado crea irónicamente un desequilibrio en el elemento contenido.

Una breve explicación de la técnica que utiliza el navegador

El navegador realiza una búsqueda binaria del ancho mínimo que no provoca líneas adicionales, y se detiene en un píxel de CSS (no píxel de visualización). Para minimizar aún más los pasos en la búsqueda de objeto binario, el navegador comienza con el 80% del ancho de línea promedio.