2011-12-29 102 views
11

我想检测一个缩放到iOS上的缩放事件(和Android真的),因为我使用jQuery Mobile来显示具有固定标题的页面。在梦幻世界中,我希望头部不要缩放,而是在页面的其余部分进行缩放。但我知道这是不可能的。检测缩放iOS上的缩放

在大多数页面中,我有一个移动版本,可以很好地缩放自己的缩放,但在“封面”上,客户希望用户能够看到整个页面(缩小到适合)头部足够大,可以使用(即与移动优化页面相同的比例),并且只能放大封面图像 - 将标题栏留在相同大小的位置。

问题是,一旦用户捏放大,这个标题栏变得不一定很大。

所以我想要做的是检测当前捏缩放级别和缩小固定标题栏,以便它看起来相同的大小(相对于周围的电话界面),而底层页面放大。

我基本上可以用适合100%宽度div的图像做到这一点,但我需要该div来重新放大缩放后留下的实际可见区域,并以拖动为中心。

我也想做一部分jQuery Mobile转换,将缩放比例设置为1:1,因此以下页面'移动友好'不会放大,因为它们不需要。

有没有人有任何想法从哪里开始?

+0

您是否可以使用手势事件进行附加操作? – Jlange 2012-01-24 00:15:55

回答

9

您可以将一个事件附加到您的主页的主体/容器,它将报告当前的比例级别。例如,使用jQuery:

$(container).bind("gesturechange", function(event) { 

     var scale = event.originalEvent.scale; 

     ...do some logic for header here. 
    }); 

如果不使用“event.preventDefault”,整个页面应该正确地滚动,标题应该纠正自己按照你的逻辑。您可能还想绑定到“gesturestart”和“gestureend”事件。

延伸阅读/解释:http://developer.apple.com/library/IOs/#documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html

0

“在一个梦想的世界想什么,我是头不放大但对于页面的其余部分这样做。”

您可以在gesturechange事件中设置header.style.WebkitTransform = 'scale(' + zoomvalue + ');以“撤消”缩放级别(模拟非缩放标头)。

使您的标题固定宽度,并在该宽度和window.innerWidth之间应用一个缩放比例。

AFAIK无法找到实际的缩放级别,因为它取决于device-independent-pixel(DIP)与逻辑像素的比例,而AFAIK则无法从JavaScript中找出。