Sobre este problema HTML
A propriedade stroke-width controla a espessura do contorno (stroke) desenhado ao redor de formas e texto, principalmente usada em SVG mas também aplicável a elementos HTML via CSS. De acordo com tanto a especificação SVG quanto o padrão CSS, stroke-width aceita apenas valores não-negativos — isto é, zero ou qualquer número positivo, opcionalmente com uma unidade de comprimento CSS como px, em, ou rem. Um número sem unidade também é válido e é interpretado nas unidades de utilizador do sistema de coordenadas atual.
Valores negativos são logicamente sem sentido para a largura de contorno porque não se pode desenhar um contorno com espessura negativa. Os navegadores tipicamente ignoram ou descartam a declaração inválida, significando que o contorno pode ser renderizado com uma largura padrão inesperada ou não ser renderizado de todo. Além de problemas de renderização, usar valores CSS inválidos causa erros de validação W3C, que podem indicar problemas de qualidade mais amplos no seu código e podem levar a comportamento imprevisível entre diferentes navegadores.
Uma causa comum deste erro é a geração dinâmica de valores — por exemplo, uma expressão CSS calc() ou uma variável de pré-processador que inadvertidamente produz um resultado negativo. Se a sua largura de contorno for computada, certifique-se de limitar o valor para que nunca fique abaixo de 0.
Como corrigir
-
Substitua valores negativos por
0ou um número positivo. Se pretendia nenhum contorno visível, use0. Se queria um contorno visível, use a espessura positiva apropriada. -
Proteja valores computados. Se o valor vier de uma expressão
calc()ou propriedade personalizada CSS, usemax()para garantir que o resultado nunca seja negativo — por exemplo,stroke-width: max(0px, calc(10px - 15px)). -
Verifique estilos inline e folhas de estilo. O erro pode aparecer tanto em atributos
styleinline quanto em CSS externo/interno. Procure no seu código por qualquer declaraçãostroke-widthcom um número negativo.
Exemplos
❌ Inválido: stroke-width negativo num elemento HTML
<p style="stroke-width: -1">Algum conteúdo</p>
Isto desencadeia o erro do validador porque -1 não é um valor permitido.
✅ Corrigido: stroke-width não-negativo
<p style="stroke-width: 0">Algum conteúdo</p>
Usar 0 remove o contorno completamente e é válido.
❌ Inválido: stroke-width negativo num elemento SVG
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="-3" fill="none"/>
</svg>
✅ Corrigido: stroke-width positivo num elemento SVG
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="none"/>
</svg>
✅ Usando max() para limitar um valor computado
<div style="stroke-width: max(0px, calc(5px - 10px))">Algum conteúdo</div>
Aqui, calc(5px - 10px) produziria -5px, mas max(0px, ...) garante que o valor final seja 0px, mantendo o CSS válido.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.