Sobre este problema HTML
De acordo com a especificação HTML, os atributos width e height nos elementos img aceitam apenas números inteiros não negativos válidos. Um número inteiro não negativo válido consiste numa ou mais cifras ASCII (0–9) sem outros caracteres — sem pontos decimais, sem espaços, sem unidades como px. Quando o validador encontra um valor como 602.88, analisa os dígitos 602 com sucesso, depois encontra o caractere . onde espera outro dígito ou o final do valor, desencadeando o erro.
Este problema surge frequentemente quando os valores das dimensões são gerados programaticamente — por exemplo, quando um CMS, ferramenta de processamento de imagens, ou cálculo JavaScript produz números de vírgula flutuante e os apresenta diretamente no HTML. Também pode acontecer quando se copiam valores de dimensões do CSS ou de ferramentas de design que trabalham em unidades sub-pixel.
Por que isto é importante
- Conformidade com os padrões: A especificação HTML é explícita em que estes atributos aceitam valores inteiros. Usar decimais produz marcação inválida.
- Renderização imprevisível: Os navegadores podem lidar com o valor malformado de diferentes maneiras — alguns podem truncar no ponto decimal, outros podem ignorar completamente o atributo. Isto pode levar a mudanças de layout ou imagens com tamanhos incorretos.
-
Estabilidade do layout: Os atributos
widtheheightsão usados pelos navegadores para calcular a proporção de aspeto de uma imagem antes de ela carregar, o que ajuda a prevenir o Cumulative Layout Shift (CLS). Valores inválidos podem comprometer este comportamento, causando saltos no conteúdo à medida que as imagens carregam.
Como corrigir
-
Arredonde para o número inteiro mais próximo. Se o seu valor é
602.88, arredonde-o para603. Se é800.2, arredonde para800. - Remova o ponto decimal completamente. O valor deve conter apenas dígitos.
-
Não inclua unidades. Valores como
800pxtambém são inválidos; use apenas800. -
Corrija a origem dos valores. Se o seu CMS ou ferramenta de construção gera estes atributos, atualize a lógica para produzir números inteiros (por exemplo, usando
Math.round()em JavaScript ouround()em PHP/Python).
Exemplos
❌ Incorreto: valores decimais em width e height
<img src="photo.jpg" alt="A golden retriever" height="602.88" width="800.2">
O validador reporta erros para ambos os atributos porque . não é um caractere válido num número inteiro não negativo.
✅ Correto: valores de números inteiros
<img src="photo.jpg" alt="A golden retriever" height="603" width="800">
Ambos os valores são números inteiros não negativos válidos sem pontos decimais.
❌ Incorreto: ponto decimal final sem parte fracionária
<img src="banner.png" alt="Sale banner" width="1200." height="400.">
Mesmo um . final sem nada depois é inválido — o analisador ainda encontra um caractere inesperado.
✅ Correto: valores inteiros limpos
<img src="banner.png" alt="Sale banner" width="1200" height="400">
Usar CSS para precisão sub-pixel
Se você genuinamente precisar de dimensionamento sub-pixel (o que é raro para imagens), use CSS em vez de atributos HTML. As propriedades CSS width e height aceitam valores decimais:
<img src="icon.svg" alt="Settings icon" style="width: 24.5px; height: 24.5px;">
No entanto, tenha em mente que deve ainda fornecer atributos HTML width e height inteiros para dicas de proporção de aspeto, e depois sobrepor com CSS se a precisão sub-pixel for necessária:
<img
src="icon.svg"
alt="Settings icon"
width="25"
height="25"
style="width: 24.5px; height: 24.5px;">
Esta abordagem dá-lhe HTML válido, dicas adequadas de proporção de aspeto para estabilidade do layout, e o dimensionamento preciso de que precisa.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.