Skip to main content
Validação HTML

Considere evitar valores de viewport que impedem os utilizadores de redimensionar documentos.

Sobre este problema HTML

Quando define user-scalable=no na sua meta tag viewport, o navegador desativa completamente o pinch-to-zoom e outros gestos de ampliação em dispositivos móveis. Da mesma forma, definir maximum-scale=1 (ou qualquer valor baixo) limita até que ponto um utilizador pode fazer zoom, efetivamente impedindo-o de aumentar o conteúdo. Embora os programadores por vezes usem estes valores para criar uma experiência “semelhante a uma app” ou prevenir problemas de layout durante o zoom, eles violam diretamente as boas práticas de acessibilidade.

Porque isto é um problema

Acessibilidade

As Web Content Accessibility Guidelines (WCAG) Critério de Sucesso 1.4.4 (Redimensionar Texto) requer que o texto possa ser redimensionado até 200% sem perda de conteúdo ou funcionalidade. Prevenir o zoom torna impossível para utilizadores com baixa visão, deficiências cognitivas ou motoras interagirem confortavelmente com a sua página. Muitos utilizadores dependem do pinch-to-zoom como a sua forma principal de ler conteúdo em dispositivos móveis.

Conformidade com padrões

O W3C HTML Validator sinaliza isto como um aviso porque entra em conflito com padrões de acessibilidade estabelecidos. Embora não vá fazer com que a sua página falhe na validação definitivamente, sinaliza uma prática que prejudica a usabilidade. Os navegadores e sistemas operativos modernos também começaram a sobrepor configurações de viewport restritivas em alguns casos — por exemplo, o iOS Safari ignora user-scalable=no por predefinição — o que significa que a restrição pode nem sequer funcionar como pretendido enquanto ainda desencadeia avisos.

Experiência do utilizador

Mesmo para utilizadores sem deficiências, prevenir o zoom pode ser frustrante. Texto pequeno, layouts densos, ou conteúdo que não se adequa completamente a um tamanho de ecrã podem todos beneficiar do utilizador poder fazer zoom. Restringir esta capacidade remove uma funcionalidade fundamental do navegador que os utilizadores esperam.

Como corrigir

  1. Remova user-scalable=no da sua meta tag viewport. Se estiver presente, ou elimine-o ou defina-o para yes.
  2. Remova ou aumente maximum-scale. Se precisar de o definir, use um valor de 5 ou superior. Idealmente, remova-o completamente e deixe o navegador gerir os limites de zoom.
  3. Remova minimum-scale se estiver definido para 1, pois isto também pode restringir o comportamento de zoom em alguns navegadores quando combinado com outros valores.
  4. Teste o seu layout a vários níveis de zoom para garantir que o conteúdo se reorganiza adequadamente e permanece utilizável.

Exemplos

❌ Viewport que impede o zoom

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

Isto desativa completamente o zoom do utilizador em navegadores compatíveis.

❌ Viewport com maximum-scale restritivo

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0">

Isto limita o zoom a 100%, efetivamente impedindo qualquer zoom significativo.

❌ Ambas as restrições combinadas

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

Esta é a combinação mais restritiva e é comumente vista em frameworks mobile-first e templates.

✅ Viewport acessível (recomendado)

<meta name="viewport" content="width=device-width, initial-scale=1">

Isto define um viewport responsivo sem restringir o zoom de forma alguma. O comportamento de zoom predefinido do navegador é preservado, e os utilizadores podem fazer escala livremente.

✅ Viewport acessível com um maximum-scale generoso

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">

Se tem uma razão específica para definir maximum-scale, use um valor de 5 ou superior. Isto ainda permite um zoom substancial enquanto lhe dá algum controlo sobre níveis de zoom extremos.

✅ Exemplo completo de documento

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Accessible Page</title>
</head>
<body>
  <h1>Welcome</h1>
  <p>This page allows users to zoom freely.</p>
</body>
</html>

Se o seu layout se quebra quando os utilizadores fazem zoom, a solução é corrigir o CSS — usando unidades relativas como em, rem, ou percentagens, e técnicas de design responsivo — em vez de desativar o zoom. Um layout responsivo bem construído deve lidar com o zoom graciosamente sem precisar de o restringir.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.