我们的目标是模拟开发人员可以使用原生iOS应用程序所做的事情:即使用基于单位的单一布局,以适应视网膜显示(640x960)和非视网膜显示(320x480)。
所有iOS开发人员需要做的就是提供两套资产,一套用于视网膜,另一套用于非视网膜,并用称为单位的相对术语设计他们的布局。如果开发人员遵循特定的命名约定,iOS会自动检测用户的屏幕大小,并使用正确的资源并相应地缩放布局。
这意味着devs可以用一个代码库为两个用户群服务。
有没有框架可以帮助HTML5开发人员完成同样的事情?
人们在最小化重复代码的同时,为非Retina和Retina显示屏做了些什么?
谢谢!
发布于 2011-10-11 23:43:56
有两件简单的事情可以让你的页面在这两种模式下工作。
首先,在文档头中使用meta标记设置视区。这将使您的横向页面宽度为480,纵向页面宽度为320。您可以使用CSS媒体查询检查您所处的方向。
<meta name="viewport" content="width=device-width; initial-scale=1, maximum-scale=1">
其次,使用CSS的background-size属性为所有图像提供视网膜图像。由于您的虚拟页面宽度是320px,因此在视网膜显示器上,每个像素实际上是2px x 2px。如果您在20x20框中提供40x40图像,视网膜显示器将按原样显示它,而非视网膜显示器将缩小像素。
.my-button {
width: 20px;
height: 20px;
background-image: url(retina-images/my-button-40x40.png);
-webkit-background-size: 20px 20px;
background-size: 20px 20px;
}
如果你使用一个图像标签,这也应该是有效的:
<img src="retina-images/my-button-40x40.png" width="20" height="20">
你也许可以做更多的工作来检查实际的屏幕尺寸,并为非视网膜人群提供较小的图像,但我认为好处不会那么明显。
发布于 2011-10-12 07:47:25
你在Retina显示屏上使用的每个单元都是一样的,所以你需要做的就是用2x版本替换所有的图像。
您可以使用window.devicePixelRatio
来检测您的web应用程序是否在Retina显示屏上运行。如果是window.devicePixelRatio > 1
,那么它就是视网膜显示屏。然后,您可以替换客户端上的所有图像:
search all css and replace background-image
.
<img />
and replace src
attribute.background-image
.canvas
,创建2倍密度,使用2倍图像。这意味着当使用100px * 100px的<canvas></canvas>
元素时,将其内容设置为200px *200px。https://stackoverflow.com/questions/7733223
复制相似问题