El mayor problema sin resolver de la informática: centrar elementos (`centering things`)
(tonsky.me)- En las aplicaciones de muchas empresas, los elementos de UI como texto e íconos no están correctamente centrados.
- Aunque usando
flexygridde CSS se puede centrar fácilmente.
display: flex
justify-content: center /* centrado horizontal */
align-items: center /* centrado vertical */
o bien
display: grid
justify-items: center /* centrado horizontal */
align-items: center /* centrado vertical */
Factores que dificultan el centrado
- Las métricas de la fuente juegan un papel importante. La mayoría de las fuentes populares no tienen una caja delimitadora ajustada exactamente y dejan márgenes, lo que dificulta el centrado.
- Por el efecto de la configuración de
line-height, es casi imposible alinear dos elementos que están en contenedores distintos. - Alinear íconos junto al texto también es una tarea muy difícil. Con la propiedad
vertical-alignde CSS no se pueden alinear los íconos de una forma realmente útil. - Las icon fonts, que meten los íconos dentro de archivos de fuente, hacen todavía más difícil la alineación porque no permiten ajustar tamaño ni padding.
- Los diseñadores también cometen el error de centrar de forma mecánica sin considerar la forma de los íconos.
- La alineación horizontal también puede salir mal si no se presta atención al detalle.
Soluciones
Diseñadores
- Si se ajusta la caja delimitadora de la fuente para que encaje exactamente con el texto, centrar se vuelve mucho más fácil.
- Figma ofrece esta función (aunque no viene activada por defecto).
- Vertical Trim : Cap Height to baseline
Diseñadores de tipografías
- Si se configuran las métricas de la fuente para que el espacio entre ascender y descender sea el doble del
cap-height, los desarrolladores podrán centrar con mucha más facilidad. - No hace falta extender el ascender/descender real hasta los límites; basta con que coincidan los números.
Desarrolladores web
- Hay que conocer de antemano la fuente que se va a usar (no funciona si hay sustitución de fuentes).
- Se puede ajustar el centrado vertical añadiendo un valor de
padding-bottomcalculado a partir de las métricas de la fuente. - Los íconos también pueden alinearse configurando
vertical-align: baseliney desplazándolos hacia abajo según un valor calculado con las métricas de la fuente y el tamaño del ícono.
Icon fonts
- Por favor, dejen de usar icon fonts y usen formatos de imagen normales.
- No hay nada más fácil que alinear dos rectángulos con ancho y alto.
Ajuste visual
- Los desarrolladores solo pueden alinear rectángulos matemáticamente perfectos. Lo que requiere ajuste manual es colocar los íconos dentro del rectángulo de forma que se vean visualmente equilibrados.
Opinión de GN⁺
- Esto muestra que prestar atención a pequeños detalles puede mejorar mucho la calidad de una UI. Incluso algo tan aparentemente trivial como el centrado puede cambiar la sensación general.
- Más que pensar simplemente que "el diseñador se encarga solo del diseño y el desarrollador solo de la implementación", esto sugiere que hay que entender el área del otro y colaborar para lograr un buen resultado.
- Desde el principio, sería mejor ajustar las métricas de la fuente y trabajar el diseño desde la etapa de diseño, para que no haya diferencias de renderizado entre navegadores y sea más fácil implementar la intención del diseñador.
- Este tipo de problemas aparece incluso en productos de empresas tan fuertes como Apple, MS y Google, pero parece que a la mayoría de la gente le pasa desapercibido. Justamente por eso es importante obsesionarse con los detalles y construir con cuidado.
- Sobre todo ahora, con el uso reciente de herramientas de automatización para pruebas de UI y la omisión de revisiones visuales manuales, este tipo de problemas puede volverse más frecuente, así que conviene tener cuidado.
3 comentarios
También vale la pena pensar si una alineación centrada mecánica realmente es lo mejor. Así como un mouse resulta más cómodo cuando tiene una forma ergonómica y ligeramente asimétrica en lugar de ser perfectamente simétrico a izquierda y derecha, quizá sea un elemento que deba decidirse viendo la usabilidad general.
Creo que el punto clave es que pueden salir resultados distintos de lo que se pretendía. Por ejemplo, una situación en la que el clic del mouse se registra no en la punta de la flecha en pantalla, sino en la parte de atrás.
Comentarios de Hacker News
Resumen:
justifyyalignde CSS