J'ai essayé les trois en vain:
<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;” />
<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=false;” />
<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;” />
chacune de ces valeurs est recommandée par la recherche Google ou par le SO, mais aucune des valeurs 'user-scalable = X' ne semble fonctionner
J'ai également essayé de délimiter les valeurs par des virgules au lieu du point-virgule, pas de chance. Ensuite, j'ai essayé UNIQUEMENT de présenter la valeur évolutive de l'utilisateur, toujours pas de chance.
UPDATE
Vous l'avez obtenu sur le site d'Apple et cela fonctionne:
<meta name="viewport" content="width=device-width, user-scalable=no" />
il s’avère que le problème vient des citations non standard car j’avais copié la balise méta d’un site Web qui les utilisait, whoops
Votre code affiche les guillemets des attributs sous forme de guillemets fantaisie. Si les guillemets fantaisie sont présents dans votre code source actuel, je suppose que c'est le problème.
Cela fonctionne pour moi sur Safari mobile dans iOS 4.2.
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
Pour les personnes recherchant une solution iOS 10, user-scaleable=no
est désactivé dans Safari pour iOS 10. La raison en est que Apple tente d'améliorer l'accessibilité en permettant aux utilisateurs de zoomer sur des pages Web.
à partir des notes de publication:
Pour améliorer l'accessibilité sur les sites Web dans Safari, les utilisateurs peuvent désormais effectuer un zoom avant, même lorsqu'un site Web définit user-scalable = no dans la fenêtre.
Donc, autant que je sache, nous n'avons pas de chance.
@ mattis est exact qu'iOS 10 Safari ne vous permettra pas de désactiver le pincement pour zoomer avec l'attribut évolutif de l'utilisateur. Cependant, je l'ai fait désactiver l'utilisation de preventDefault sur l'événement 'gesturestart'. Je ne l'ai vérifié que sur Safari sous iOS 10.0.2.
document.addEventListener('gesturestart', function (e) {
e.preventDefault();
});
pour iphones safari jusqu'à iOS 10 "viewport" n'est pas une solution, je n'aime pas cette façon, mais j'ai utilisé ce code javascript et cela m'a aidé
document.addEventListener('touchmove', function(event) {
event = event.originalEvent || event;
if(event.scale > 1) {
event.preventDefault();
}
}, false);
user-scalable=0
Cela ne fonctionne plus sous iOS 10. Apple a supprimé la fonctionnalité.
Il n’ya aucun moyen de désactiver le site Web de zoom sur iOS pour le moment, sauf si vous créez une application de plate-forme brute.
Essayez d'ajouter ce qui suit à votre balise head:
<meta name="viewport" content="width=device-width, initial-scale=1.0,
minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
aditionellement
<meta name="HandheldFriendly" content="true">
Enfin, en tant qu'attribut de style ou dans votre fichier css, ajoutez le texte suivant pour les navigateurs Webkit:
html {
-webkit-text-size-adjust: none
}
Cela fonctionne très bien dans IOS 10.3.2
document.addEventListener('touchmove', function(event) {
event = event.originalEvent || event;
if (event.scale !== 1) {
event.preventDefault();
}
}, false);
merci @arthur et @aleclarson
parfois, ces autres directives dans le contenu peuvent gâcher votre vue avec la meilleure estimation par Apple de la mise en page de votre page, il vous suffit de désactiver le zoom par pincement.
<meta name="viewport" content="user-scalable=no" />
Dans Safari 9.0 et les versions ultérieures, vous pouvez utiliser une réduction de taille dans la balise méta de viewport, comme indiqué ci-dessous.
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
J'ai réussi à arrêter ce problème en ajoutant ce qui suit à l'en-tête HTML. Cela fonctionne sur les appareils mobiles, car les navigateurs de bureau prennent en charge le zoom lorsque vous utilisez la molette de la souris. Ce n'est pas un gros problème sur les navigateurs de bureau, mais il est important de prendre cela en compte.
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
et la règle suivante à la feuille de style CSS
html {
-webkit-text-size-adjust: none;
touch-action: manipulation;
}
Je l'ai fait fonctionner dans iOS 12 avec le code suivant:
if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
window.document.addEventListener('touchmove', e => {
if(e.scale !== 1) {
e.preventDefault();
}
}, {passive: false});
}
Avec la première instruction if, je m'assure qu'il ne s'exécutera que dans les environnements iOS (s'il s'exécute dans Android, le défilement sera annulé). Notez également que l’option passive
est définie sur false
.
J'ai bêtement eu un div wrapper qui avait une largeur mesurée en pixels. Les autres navigateurs semblaient assez intelligents pour gérer cela. Une fois la largeur convertie en valeur en pourcentage, cela fonctionnait également sous Safari mobile. Très ennuyant.
.page{width: 960px;}
à
.page{width:93.75%}
<div id="divPage" class="page">
</div>
Afin de respecter les exigences d'accessibilité de WAI WCAG 2.0 AA, vous devez ne jamais désactiver le zoom par pincement. (WCAG 2.0: SC 1.4.4 Redimensionner le texte niveau AA). Vous pouvez en lire plus à ce sujet ici: Accessibilité mobile: Comment les directives WCAG 2.0 et autres directives W3C/WAI s’appliquent-elles au mobile, Zoom/Grossissement 2.2