J'ai créé un petit jeu dans Canvas, mais j'ai un problème. Certains utilisateurs dont le zoom par défaut est défini sur autre chose que 100% ne peuvent pas voir la page entière du jeu.
J'ai essayé d'utiliser ce CSS:
zoom: 100%;
Ce HTML
<meta name="viewport" content="initial-scale=1.0 , minimum-scale=1.0 , maximum-scale=1.0" />
Et ce JS:
style="zoom: 75%"
Des idées sur la façon de régler par programme le zoom de la page?
Vous pouvez définir la propriété zoom
au chargement de la page
document.body.style.zoom = 1.0
Mais, zoom
est pas une propriété standard pour tous les navigateurs , je recommande d'utiliser transform
à la place.
var scale = 'scale(1)';
document.body.style.webkitTransform = scale; // Chrome, Opera, Safari
document.body.style.msTransform = scale; // IE 9
document.body.style.transform = scale; // General
Vous pouvez réinitialiser le code avec ceci:
$("input, textarea").focusout(function(){
$('meta[name=viewport]').remove();
$('head').append('<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=0">');
$('meta[name=viewport]').remove();
$('head').append('<meta name="viewport" content="width=device-width, initial-scale=yes">' );
});
Je pense que c'est une réponse très utile comment détecter le niveau de zoom de la page dans tous les navigateurs modernes . Alors la réponse à votre question pour IE:
document.body.style.zoom = screen.logicalXDPI / screen.deviceXDPI;
Le seul moyen que j'ai trouvé qui fonctionne nativement est de concevoir mon HTML/CSS avec les unités "vw" et "vh" (% par rapport à la fenêtre d'affichage) au lieu de "px". Vous pouvez l'utiliser partout où vous avez utilisé pour mettre "px" (taille de police, largeur, hauteur, rembourrage, marge, etc ...). Très utile pour une page conçue pour être affichée en plein écran uniquement (sans défilement) ou en "style kiosque". "vw" et "vh" ne sont pas affectés par le zoom du navigateur. Voir: https://www.w3schools.com/cssref/css_units.asp
Il fonctionne en chrome 66:
document.body.style.zoom = (window.innerWidth / window.outerWidth)
Pour les navigateurs mobiles, la réponse de @ Linden a fonctionné le mieux pour moi sur Chrome. Cependant, sur FF mobile, il avait besoin de quelques ajustements supplémentaires, je suis arrivé à une version qui fonctionne dans les deux navigateurs:
let restore = $('meta[name=viewport]')[0];
if (restore) {
restore = restore.outerHTML;
}
$('meta[name=viewport]').remove();
$('head').append('<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">');
if (restore) {
setTimeout(() => {
$('meta[name=viewport]').remove();
$('head').append(restore);
}, 100); // On Firefox it needs a delay > 0 to work
}
De plus, la balise de la fenêtre d'affichage de la page restaurée doit avoir une échelle maximale explicite pour permettre le zoom sur Firefox après la réinitialisation, je l'ai donc initialement défini comme suit:
<meta name="viewport" content="width=device-width, maximum-scale=10">
Testé sur mobile Chrome 76.0 et mobile Firefox 68.1.