Comment puis-je "désactiver" zoom sur une page web mobile?

je crée une page Web mobile qui est essentiellement un grand formulaire avec plusieurs entrées de texte.

cependant (au moins sur mon téléphone Android), chaque fois que je clique sur une entrée la page entière zoome là, obscurcissant le reste de la page. Existe-t-il une commande HTML ou CSS pour désactiver ce type de zoom sur les pages web moble?

250
demandé sur James Donnelly 2010-12-17 20:00:24

7 réponses

Ce doit être tout ce dont vous avez besoin

<meta 
     name='viewport' 
     content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' 
/>
350
répondu kgutteridge 2017-10-13 06:11:48

pour ceux d'entre vous qui êtes en retard à la fête, la réponse de kgutteridge ne fonctionne pas pour moi et la réponse de Benny Neugebauer inclut target-densitydpi (une fonctionnalité qui est dépréciée ).

cela cependant fonctionne pour moi:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
140
répondu Luke Keller 2015-07-15 01:13:36

il y a un certain nombre d'approches ici - et bien que la position soit que typiquement les utilisateurs ne devraient pas être limités quand il s'agit de zoomer à des fins d'accessibilité, il peut y avoir des incidences où est-il nécessaire:

le Rendu de la page à la largeur de l'appareil, dont l'échelle:

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

empêcher l'échelle - et empêcher l'utilisateur d'être en mesure de zoom:

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

suppression de tout zoom, toute mise à l'échelle

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
44
répondu SW4 2014-11-25 12:45:42

vous pouvez utiliser:

<head>
  <meta name="viewport" content="target-densitydpi=device-dpi, initial-scale=1.0, user-scalable=no" />
  ...
</head>

mais veuillez noter qu'avec Android 4.4 la propriété target-densitydpi n'est plus supportée . Donc pour Android 4.4 et plus tard, ce qui suit est suggéré comme meilleure pratique:

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
37
répondu Benny Neugebauer 2015-07-10 14:37:52

Puisqu'il n'y a toujours pas de solution pour l'émission initiale, voici ma pure CSS deux cents.

Les navigateurs mobiles

(la plupart d'entre eux) exigent que la taille de police des entrées soit de 16px. So

input[type="text"],
input[type="number"],
input[type="email"],
input[type="tel"],
input[type="password"] {
  font-size: 16px;
}

résout le problème. Ainsi, vous n'avez pas besoin de désactiver zoom et les caractéristiques d'accessibilité lâche de votre site.

si la taille de votre police de base n'est pas 16px ou 16px sur les mobiles, vous pouvez utiliser les requêtes médias.

@media screen and (max-width: 767px) {
  input[type="text"],
  input[type="number"],
  input[type="email"],
  input[type="tel"],
  input[type="password"] {
    font-size: 16px;
  }
}
8
répondu Azamat Rasulov 2018-08-14 19:34:19

Vous pouvez accomplir la tâche en ajoutant simplement le "méta" dans votre "tête":

<meta name="viewport" content="user-scalable=no">

l'Ajout de tous les attributs ('width','initial-scale', 'largeur', 'maximum de l'échelle" peut ne pas fonctionner. Donc, il suffit d'ajouter l'élément.

1
répondu Kasumi Gunasekara 2017-11-09 04:08:33

certaines balises meta de viewport ne fonctionneront pas .j'ai ce cas, vous pouvez ajouter ce script

$(document).on('touchmove', false);

par exemple:

</head>
<body>
<script>$(document).on('touchmove', false);</script>
</body>
-1
répondu Sarath Ak 2017-09-20 04:09:18