【发布时间】:2012-02-22 09:39:13
【问题描述】:
我在移动在线商店工作,在实现产品缩放功能时卡住了
点击图片后“用户可缩放”是允许的,最大缩放设置为 10.0 当用户使用捏合手势放大产品时,一切正常。 但是在关闭缩放的图像后,比例不会重置为 1.0。
有没有办法动态重置视口的比例值。 “初始比例”似乎不起作用,将“最小比例”和“最大比例”重置为 1.0
问题出现在 iPhone / iPad 上
似乎有一个解决方案,但我不知道我应该在这篇文章中应用哪个元素: How to reset viewport scaling without full page refresh?
“你需要使用-webkit-transform: scale(1.1); webkit transition。”
但我不知道样式应用于哪个元素。
这里有一些代码来说明问题。
在视口的元标记中如下所示:
<meta name="viewport" content="user-scalable=no, width=device-width, height=device-height, minimum-scale=1.0, maximum-scale=1.0" />
页面的其余部分如下所示:
<div id="page">
<img src="images/smallProductImage.jpg">
</div>
<div id="zoom">
<div class="jsZoomImageContainer"></div>
</div>
这是 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");
});
【问题讨论】:
-
您提到的解决方案使用 CSS 来缩放事物,而不是应用在视口上的原生缩放。如果你想应用那个解决方案,你应该重新考虑你的缩放,所以它是由 css+javascript 完成的
-
如果你有兴趣,我写了一个答案(这里)[stackoverflow.com/questions/22639296/… 关于这个确切的问题。一个(对我而言)有效的解决方案,与在回答您的问题或其他问题时找到的所有解决方案相反。
标签: javascript iphone ipad mobile viewport