Quebra de texto CSS: saldo

O CSS é uma técnica de tipografia clássica que usa a criação manual de quebras de linha para blocos de texto equilibrados.

Adam argyle
Adam Argyle

O valor de balance para text-wrap faz parte do CSS Text Level 4. Confira os exemplos nesta postagem para saber como essa linha de CSS pode melhorar significativamente os layouts de texto.

Compatibilidade com navegadores

  • 114
  • 114
  • 121

Origem

Teste uma demonstração

Sem o text-wrap: balance, designers, editores de conteúdo e editores têm algumas ferramentas para mudar a maneira como as linhas são equilibradas. As melhores opções disponíveis são usar <wbr> ou &shy; para ajudar a orientar layouts de texto em decisões mais inteligentes sobre onde quebrar linhas e palavras.

Como desenvolvedor, você não sabe o tamanho final, o tamanho da fonte ou até mesmo o idioma de um título ou parágrafo. Todas as variáveis necessárias para um tratamento eficaz e estético de ajuste de texto estão no navegador. É por isso que vemos o ajuste de títulos como na imagem abaixo:

O título é destacado pelo DevTools, ocupa toda a largura do espaço inline e tem duas palavras pendentes na segunda linha.
Teste uma demonstração
.unbalanced {
  max-inline-size: 50ch;
}

Com text-wrap: balance do CSS Text 4, você pode solicitar que o navegador descubra a melhor solução de ajuste de linhas para o texto. O navegador conhece todos os fatores, como tamanho da fonte, idioma e área alocada. Os resultados do ajuste de texto balanceado pelo navegador estão assim hoje:

O título está destacado como o DevTools anterior, mas esse tempo não abrange toda a largura. Começou uma nova linha antes do final e, como tal, é um bloco de texto equilibrado.
Teste uma demonstração
.balanced {
  max-inline-size: 50ch;
  text-wrap: balance;
}

É útil vê-los lado a lado, imóveis e sem informações de depuração sobrepostas.

Os dois exemplos anteriores são mostrados juntos, um está marcado como desequilibrado e o outro como equilibrado.

Seus olhos ficarão muito mais satisfeitos com o bloco de texto equilibrado. Ele chama mais atenção e é mais fácil de ler no geral.

Como encontrar o equilíbrio

Os títulos são a primeira coisa que os leitores veem. Eles precisam ser visualmente atraentes e fáceis de ler. Isso chama a atenção do usuário e oferece uma sensação de qualidade e segurança. Uma boa tipografia dá confiança aos leitores, incentivando-os a continuar lendo.

Tradicionalmente, essa tarefa era feita à mão ou opticamente, já que o designer que equilibra o texto quer agradar o olhar, não a matemática. Esse tópico é muitas vezes conhecido como métrica versus alinhamento óptico. Para grandes publicações, como o New York Times, o balanceamento de título é um detalhe muito importante da experiência do usuário.

Teste uma demonstração

O balanceamento de texto na tipografia remonta aos primeiros dias da impressão, quando as impressoras colociam letras à mão. Conforme as ferramentas e técnicas evoluíram, os resultados também cresceram. Atualmente, os designers têm cores, peso, tamanho e muito mais para equilibrar o texto nos designs.

No entanto, na Web, há menos controle disponível porque o documento muda de tamanhos e cores com base nos usuários. O text-wrap: balance traz a arte de equilíbrio de texto para a Web de maneira automatizada, com base no trabalho e nas tradições de designers do setor impresso.

Equilibrar títulos

Esse vai e vai ser o caso de uso principal do text-wrap: balance. Desenhe o olho com tamanho e faça com que ele seja simétrico e legível para o olho ler. Defina todos os títulos como ajuste de texto equilibrado com o seguinte CSS:

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

A simples aplicação desse estilo pode não fornecer os resultados esperados, já que o texto precisa ser unido e, portanto, um comprimento de linha máximo aplicado de algum lugar. Você verá um conjunto de max-inline-size nos exemplos desta postagem. Esse estilo é semelhante a max-width, mas pode ser definido uma vez para qualquer idioma.

Limitações

A tarefa de equilibrar o texto não é livre. O navegador precisa repetir as iterações para descobrir a melhor solução de encapsulamento equilibrado. Esse custo de desempenho é atenuado por uma regra. Só funciona para seis linhas unidas ou menos.

Teste uma demonstração

Considerações sobre performance

Não é uma boa ideia aplicar balanceamento de ajuste de texto em todo o design. É uma solicitação desperdiçada, devido ao limite de seis linhas, e pode afetar a velocidade de renderização da página.

O que não fazer
* {
  text-wrap: balance;
}
CONSIDERE
h1, h2, h3, h4, h5, h6, blockquote {
  text-wrap: balance;
}

Uma grande vantagem desse recurso é que você não precisa esperar e cronometrar o balanceamento de ajuste de texto com o carregamento de fonte, como já acontece com o JavaScript. O navegador cuida disso!

Interações com a propriedade white-space

O balanceamento de texto compete com a propriedade white-space porque um deles está solicitando o não ajuste e o outro está solicitando um ajuste equilibrado. Para resolver isso, remova a propriedade do espaço em branco e, em seguida, o ajuste equilibrado pode ser aplicado novamente.

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

O balanceamento não muda o tamanho inline do elemento.

Há uma vantagem em algumas das soluções JavaScript para ajuste de texto equilibrado, porque elas mudam o max-width do próprio elemento. Isso tem um bônus extra de ser "encolhido" ao bloco equilibrado. text-wrap: balance não tem esse efeito e pode ser visto neste exemplo:

O título está destacado como o DevTools anterior, mas esse tempo não abrange toda a largura. Começou uma nova linha antes do final e, como tal, é um bloco de texto equilibrado.

Viu como a largura mostrada no DevTools tem muito espaço extra no final? Isso ocorre porque é apenas um estilo de ajuste, não um estilo que muda de tamanho. Por isso, há alguns cenários em que text-wrap: balance não é tão bom, pelo pelo menos na minha opinião. Por exemplo, títulos dentro de um card (ou qualquer contêiner com bordas ou sombras).

O ajuste de texto equilibrado cria ironicamente um desequilíbrio no elemento contido.

Uma breve explicação da técnica que o navegador está usando

O navegador executa uma pesquisa binária pela menor largura que não gera linhas adicionais, parando em um pixel CSS (não o pixel de exibição). Para minimizar ainda mais as etapas na pesquisa binária, o navegador começa com 80% da largura média da linha.