2012-03-06 33 views
1

我建立了一个移动网站,以适应320px宽。在这个线程(http://stackoverflow.com/questions/4520064/mobile-website-for-iphone-problems)中,它抛出了一段有用的代码,以确保iPhone以正确的分辨率(320宽)显示它。但是,当我旋转手机时,它不会自动重新缩放以适应更宽的视口。正确缩放网站以显示在iphone

关于如何解决这个问题的任何建议?

+0

一些非常有用的信息,谢谢。我要通过它来看看它是什么。谢谢。 – Andy 2012-03-06 22:58:43

回答

3

您可以使用CSS media queries [w3.org]动态调整您的内容的大小。

要检测的时候手机是纵向还是横向,使用orientation,例如:

@media all and (orientation:landscape) { 
    /* apply your css styles here */ 
} 

你也可以连接在一起的特定情况下,这取决于你想具体怎么是。举例来说,如果你想要的风格肖像浏览器的400像素的设备宽度,你会做到以下几点:

@media all and (orientation:landscape) and (device-width:400px) { 
    /* apply your css styles here */ 
} 

* 应当指出的是,媒体查询应该在你的CSS文件的最后,否则它们将不会正确覆盖现有的样式。

2

对于我的一些移动项目,我一直在使用resize事件的事件监听器。当设备从纵向/横向切换(或桌面窗口调整大小)时,事件将被调用,您可以手动设置元素的高度和宽度。

这里是什么,我一直在使用一个简单的例子:

window.addEventListener('resize', resizetick, false); 
<...> 
function resizetick(e) { 
    if(this.resizet) 
     clearTimeout(this.resizet); 
     resizet = setTimeout(resizecallback, 100); 
} 
<...> 
function resizecallback() { 
    <if new resolution then resize elements here> 
} 

中的setTimeout/clearTimeout背后的目的是为了防止多个调整大小。桌面浏览器事件不断发生,而调整大小和移动用户可能会无意中改变其设备的方向。我想避免重复调整内容。

您需要绑定或以其他方式处理resize()和resizecallback()。我没有一个方便的剪切和粘贴工作代码的项目 - 抱歉。 :\

2

很难说出去看网站,但我会采取刺:你明确地说网站的宽度是320px,当你旋转它的时候手机的宽度不是这样的。你的包装应该是width: 100%,这样文档就可以重新调整它自己,或者重新缩放视口。