posts - 138, comments - 1881, trackbacks - 97, articles - 13
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

在了解到iPhone的一些常见布局法后,我们就可以开始着手编写一个真正能在iPhone上跑的页面了。小声说一句,之前我说要布局讨论完了,要进入交互逻辑开发,后来细心一想发现不行,有些东西不讲的话将会对布局带来问题,绕过去的话并不怎么优雅,因此继续讲布局。

首先要说的就是viewport,也就是可视区域。对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏、状态栏、滚动条等等之后用于看网页的区域,这是真正有效的区域。(无论你屏幕多大,如果你装足够多的toolbar,你的viewport最终也会消失掉。)在桌面浏览器中,viewport的大小是与浏览器窗口大小直接相关的,窗口大了viewport自然就大,同时随着viewport的改变,页面布局可能也跟着变。例如width: 100%的页面宽度就总是和viewport宽度一致。

然而iPhone的Safari不是这样理解viewport的,它基于viewport呈现页面,然后用户缩放页面后viewport保持不变,仅仅是页面内容按比例缩放了。举个例子,在不设置viewport的情况下,默认viewport为宽度980(单位是像素),这时候页面的呈现出来的布局和在桌面短viewport宽度为980时呈现的结果一致,然而因为iPhone屏幕宽度为320,因此按比例缩小了。因此,一张宽度为320的图片,在默认viewport下会这样显示:

可以看到,图片按比例缩小了,这对于传统Web页面直接在iPhone上面显示来说是很好的事情,因为如果传统Web页面在980宽度的桌面浏览器viewport中显示正常的话,iPhone上显示也绝对正常。然而这对于Web应用程序来说则不是好事,因为我们需要按照980宽度来设计将来会以320宽度显示的页面,一个应该显示为320*80的元素,必须设计为980*245,这多麻烦!

因此我们需要改变viewport,让它变成这样:

实际上应该怎么做呢?我们有几个选择,因此先让我们看看到底我们能够设置哪些属性吧。我们可以操作的属性有4个:

  • width - viewport的宽度
  • height - viewport的高度
  • initial-scale - 初始的缩放比例
  • minimum-scale - 允许用户缩放到的最小比例
  • maximum-scale - 允许用户缩放到的最大比例
  • user-scalable - 用户是否可以手动缩放

这6个属性,我们可以设置其中的一个或者多个,iPhone会根据你设置的属性自动推算其他属性值,而非直接采用默认值。这点很重要,在完全不设置的时候有默认viewport,在你设置一个属性后其它值是自动推算出来的,不再是默认的。

如果你把initial-scale=1,那么widthheight在竖屏时自动为320*356(不是320*480因为地址栏等都占据空间),横屏时自动为480*208。

类似地,如果你仅仅设置了width,就会自动推算出initial-scale以及height。例如你设置了width=320,竖屏时initial-scale就是1,横屏时则变成1.5了。

那么到底这些设置如何让Safari知道?其实很简单,就一个meta,形如:

<meta id="viewport" name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>

在设置了initial-scale=1之后,我们终于可以以1:1的比例进行页面设计了。下一步我们就可以正式进入页面布局的细节设计了,如果你想继续关注iPhone开发话题的话,欢迎订阅:

Feedback

#1楼   回复  引用  查看    

2007-12-26 17:53 by A.Z      
没有人送iPhone,lz送一个吧

#2楼[楼主]   回复  引用  查看    

2007-12-26 18:45 by Cat Chen      
@A.Z
据说快要在国内上市了,到时候就容易买了。

#3楼   回复  引用  查看    

2007-12-26 21:26 by aspnetx      
这东西就像PSP一样,不过区别在于,PSP在海外的售价就不贵,所以国内也一直是这个价格,当然了都是水的.
iphone上来就是很高的价格,再加上点关税,那么国内的价格可真不好说,在价格上怀疑没有windows mobile的优势.

#4楼[楼主]   回复  引用  查看    

2007-12-26 21:57 by Cat Chen      
@aspnetx
没错,买Apple的产品完全就是花钱买fashion。别说iPhone,说iPod Touch,论HK定价,免税的。2400HK$的8G iPod Touch,比1500HK$的PSP规了多少啊,那个差价能够用来买8G的Memory Stick还有余呢!况且,其实Sony本身就是做音乐的,这个Apple没办法比。

#5楼   回复  引用  查看    

2007-12-26 23:58 by 爆牙齿      
很感谢提供这些信息。

#6楼   回复  引用  查看    

2007-12-27 01:06 by sban      
希望看到更多关于iphone的内容。

#7楼   回复  引用  查看    

2007-12-27 08:43 by 丁一      
还是很喜欢IPhone,起码给我感觉用户体验做的不错.. 攒钱..

#8楼[楼主]   回复  引用  查看    

2007-12-27 13:19 by Cat Chen      
@爆牙齿
谢谢支持,我会继续写下去的。

#9楼   回复  引用  查看    

2007-12-27 16:59 by aspnetx      
@Cat Chen
所以了,还是先玩psp了,呵呵
说不准哪天微软再整个.net framework for psp,呵呵

#10楼[楼主]   回复  引用  查看    

2007-12-27 17:26 by Cat Chen      
@aspnetx
这个貌似很有难度,因为PSP的OS不是任何Microsoft体系下的东西……



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1015867




相关文章:

相关链接: