sto lavorando su un un cellulare negozio online e rimasto bloccato durante l'implementazione della funzione di prodotto zoomC'è un modo per ripristinare la scala della finestra in modo dinamico a 1,0
Dopo aver cliccato un'immagine "user-scalabile" è consentito e la scala massima è impostata su 10,0 Quando l'utente ingrandisce il prodotto con un gesto di pizzicamento, tutto funziona correttamente. Ma dopo aver chiuso l'immagine ingrandita, la scala non viene riportata a 1.0.
C'è un modo per ripristinare dinamicamente il valore di scala della finestra. Il "iniziale di scala" sembra non funzionare, neppure resettare il "minimo scala" e "massima scala" per 1,0
I problemi si verifica su iPhone/iPad
Sembra che ci sia una soluzione , ma non so a quale elemento dovrei applicare questo post: How to reset viewport scaling without full page refresh?
"È necessario utilizzare -webkit-transform: scale (1.1); transizione webkit."
Ma non so a quale elemento viene applicato lo stile.
Ecco un codice per illustrare il problema.
Nel meta tag per la finestra si presenta così:
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height, minimum-scale=1.0, maximum-scale=1.0" />
il resto della pagina si presenta così:
<div id="page">
<img src="images/smallProductImage.jpg">
</div>
<div id="zoom">
<div class="jsZoomImageContainer"></div>
</div>
e questo è il javascript ::
zoom:{
img: null,
initialScreen:null,
load:function(src){
//load the image and show it when loaded
showLoadingAnimation();
this.img = new Image();
this.img.src = src;
jQuery(this.img).load(function(){
zoom.show();
});
},
show:function(){
var screenWidth, screenHeight, imageWidth, imageHeight, scale, ctx;
hideLoadingAnimation();
jQuery("#page").hide();
jQuery("#zoom").show();
jQuery(".jsZoomImageContainer").empty();
this.initialScreen =[jQuery(window).width(), jQuery(window).height()]
jQuery(".jsZoomImageContainer").append(this.img);
imageWidth = jQuery(this.img).width();
imageHeight = jQuery(this.img).height();
scale = this.initialScreen[0]/imageWidth ;
jQuery(this.img).width(imageWidth * scale)
jQuery(this.img).height(imageHeight * scale)
jQuery(".jsZoomImageContainer").click(function(){
zoom.hide();
});
jQuery('meta[name="viewport"]',"head").attr("content","user-scalable=yes, initial-scale:1.0, minimum-scale=1.0, maximum-scale=10.0")
},
hide:function(){
jQuery(".jsZoomImageContainer").empty();
jQuery('meta[name="viewport"]',"head").attr("content","user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0")
jQuery("#zoom").hide();
jQuery("#page").show();
this.img = null;
this.initialScreen = null;
}
}
jQuery("#page img").click(function(){
zoom.load("images/bigProductImage.jpg");
});
la soluzione che hai citato utilizza CSS per ridimensionare le cose, non lo zoom nativo applicato sul viewport. Se vuoi applicare questa soluzione, dovresti riconsiderare lo zoom in modo che sia fatto da css + javascript – BBog
Se sei interessato, ho scritto una risposta (qui) [https://stackoverflow.com/questions/22639296/force-mobile -browser-zoom-out-with-javascript/46137189 # 46137189] su questo problema esatto. Una soluzione che funziona (per me) contrariamente a tutte le soluzioni trovate in risposta alla tua domanda o quell'altra domanda. –