Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando trabalhamos com elementos HTML que usam CSS para restringir o texto visível — como white-space: nowrap, overflow: hidden e text-overflow: ellipsis — uma dúvida comum é como identificar, via JavaScript, quais desses elementos estão com o mensagem de texto truncada. Essa questão é relevante para melhorar interações, criar dicas contextuais ou otimizar o desempenho ao evitar carregamentos desnecessários.
Muitos desenvolvedores enfrentam dificuldades em detectar automaticament e se o conteúdo de um elemento foi cortado por causa das regras de overflow. Isso pesa no momento de criar funcionalidades que dependem da visibilidade integral do texto, como exibir tooltips, fazer análises de conteúdo ou ajustar o layout dinamicamente. Como identificar isso sem recorrer a hacks de browser específicos? A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
A abordagem mais confiável envolve uma estratégia de clone do elemetno, que serve como uma referência de tamanho real do texto, sem restrições de overflow. A ideia é criar uma cópia do elemento, remover suas restrições de largura, colocar em um estado visível e medir sua largura natural. Comparando esse valor com o elemento original, podemos determinar se o texto está sendo cortado. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Por exemplo, a lógica consiste em:
1. Selecionar o elemento alvo.
2. Clonar esse elemento.
3. Aplicar estilos que removem limitações de largura e visibilidade, como display: inline, width: auto e visibility: hidden.
4. Inserir temporariamente na DOM.
5. Comparar a largura do clone com a original.
6. Remover o clone da DOM.
Se o valor do clone for maior, a conclusão é que o texto foi truncado.
function isTextTruncated(element) {
const clone = element.cloneNode(true). clone.style.cssText = 'display:inline. width:auto. visibility:hidden. '. document.body.appendChild(clone). const isOverflowing = clone.offsetWidth > element.offsetWidth. document.body.removeChild(clone). return isOverflowing. }
// Uso:
const elementos = document.querySelectorAll('.texto-truncado'). elementos.forEach(el => {
if (isTextTruncated(el)) {
console.log('Texto truncado:', el.textContent). }
}).
Esse método, embora hacky, oferece uma solução confiável na maioria dos navegadores modernos, pois evita dependências de implementações específicas e lida com diferentes tamanhos de texto de forma eficaz.
A principal desvantagem dessa abordagem é o impacto de performance, especialmente em listas grandes ou elementos com atualização frequente. Cada verificação envolve manipulação do DOM e cálculo de estilos, o que pode gerar impacto na renderização. Para casos de uso mais sensíveis, recomenda-se fazer verificações assíncronas ou limitar a checagem a elementos críticos. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Outro ponto a considerar é a compatibilidade. Apesar de funcionar na maioria dos browsers atuais, é importante realizar testes em ambientes específicos, sobretudo em versões mais antigas de IE ou navegadores menos comuns. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois.
1. Agrupe elementos que precisam ser verificados para evitar múltiplas operações.
2. Use requestAnimationFrame ou setTimeout para espaçar as verificações em cenários de alta frequência.
3. Cache os resultados, evitando verificações repetidas em elementos estáticos.
4. Considere criar um pseudo-seletor personalizado para facilitar a identificação de elementos truncados em seu código.
Ao aplicar essa técnica, sua UI consegue reagir dinamicamente às mudanças de conteúdo, melhorando a experiência do usuário e facilitando tarefas de automação ou análise de conteúdo. Essa estratégia é uma ferramenta que, apesar de não ser perfeita, resolve uma dor comum na manipulação de textos com overflow controlado. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Carregando comentários...