- Em aplicativos de muitas empresas, elementos de UI como texto e ícones não estão devidamente centralizados
- Apesar de ser fácil centralizar usando
flexegriddo CSS
display: flex
justify-content: center /* centralização horizontal */
align-items: center /* centralização vertical */
ou
display: grid
justify-items: center /* centralização horizontal */
align-items: center /* centralização vertical */
Fatores que dificultam a centralização
- As métricas da fonte têm um papel importante. A maioria das fontes populares não tem uma bounding box perfeitamente ajustada e possui margens, o que dificulta a centralização
- Por causa da configuração de
line-height, é quase impossível alinhar dois elementos em contêineres diferentes - Alinhar ícones ao lado de texto também é muito difícil. Com a propriedade
vertical-aligndo CSS, não dá para alinhar ícones de forma significativa - Fontes de ícones, em que os ícones são colocados dentro de um arquivo de fonte, tornam o alinhamento ainda mais difícil porque não permitem ajustar tamanho e padding
- Designers também cometem o erro de centralizar mecanicamente sem considerar o formato do ícone
- O alinhamento horizontal também pode dar errado se não houver atenção aos detalhes
Soluções
Designers
- Se a bounding box da fonte for ajustada exatamente ao texto, a centralização fica muito mais fácil
- O Figma oferece suporte a esse recurso (não é o padrão)
- Vertical Trim : Cap Height to baseline
Designers de fonte
- Se as métricas da fonte forem configuradas para que o espaço entre
ascenderedescenderseja o dobro dacap-height, os desenvolvedores conseguem centralizar com facilidade - Não é necessário estender o ascender/descender real até os limites; basta acertar os números
Desenvolvedores web
- É preciso conhecer antecipadamente a fonte que será usada (não funciona com substituição de fonte)
- É possível acertar a centralização vertical adicionando um valor de
padding-bottomcalculado com base nas métricas da fonte - Ícones também podem ser alinhados definindo
vertical-align: baselinee deslocando-os para baixo pelo valor calculado a partir das métricas da fonte e do tamanho do ícone
Fontes de ícones
- Por favor, parem de usar fontes de ícones e usem formatos de imagem comuns
- Nada é mais fácil do que alinhar dois retângulos com largura e altura
Ajuste visual
- Desenvolvedores só conseguem alinhar retângulos matematicamente perfeitos. O que exige ajuste manual é posicionar o ícone dentro do retângulo de forma visualmente equilibrada
Opinião do GN⁺
- Isso mostra como a atenção aos pequenos detalhes pode melhorar bastante a qualidade da UI. Mesmo algo aparentemente trivial como centralizar pode mudar a sensação geral
- Em vez da mentalidade de que "designer cuida só do design e desenvolvedor só da implementação", isso sugere que bons resultados surgem quando ambos entendem a área um do outro e colaboram
- O ideal parece ser ajustar as métricas da fonte e produzir os layouts já na etapa de design, para que não haja diferenças de renderização entre navegadores e para facilitar a implementação fiel à intenção do designer
- Esse problema aparece até em produtos de empresas de peso como Apple, Microsoft e Google, mas parece que a maioria das pessoas passa por isso sem notar. Isso reforça como é importante criar com obsessão por detalhes minuciosos
- Especialmente agora, com o uso recente de ferramentas de automação de testes de UI, o processo de verificar tudo manualmente com o olho humano pode ser omitido, então esse tipo de problema pode se tornar ainda mais frequente e merece atenção
3 comentários
Vale pensar também se um alinhamento central mecânico é realmente algo bom. Assim como um mouse é mais confortável quando tem um design ergonômico com os lados ligeiramente diferentes, em vez de perfeitamente simétrico, talvez isso também seja algo a decidir olhando para a usabilidade como um todo.
Acho que o ponto principal é que o resultado pode acabar saindo diferente da intenção. Por exemplo, uma situação em que o clique do mouse acontece não na ponta da seta na tela, mas na parte de trás dela.
Comentários do Hacker News
Resumo:
justifyealigndo CSS