首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用一个代码库为非视网膜和视网膜显示提供服务:在iPhones或iOS设备上为HTML5应用程序缩放布局和资源的框架?

使用一个代码库为非视网膜和视网膜显示提供服务:在iPhones或iOS设备上为HTML5应用程序缩放布局和资源的框架?
EN

Stack Overflow用户
提问于 2011-10-12 06:20:18
回答 2查看 21.2K关注 0票数 8

我们的目标是模拟开发人员可以使用原生iOS应用程序所做的事情:即使用基于单位的单一布局,以适应视网膜显示(640x960)和非视网膜显示(320x480)。

所有iOS开发人员需要做的就是提供两套资产,一套用于视网膜,另一套用于非视网膜,并用称为单位的相对术语设计他们的布局。如果开发人员遵循特定的命名约定,iOS会自动检测用户的屏幕大小,并使用正确的资源并相应地缩放布局。

这意味着devs可以用一个代码库为两个用户群服务。

有没有框架可以帮助HTML5开发人员完成同样的事情?

人们在最小化重复代码的同时,为非Retina和Retina显示屏做了些什么?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 07:43:56

有两件简单的事情可以让你的页面在这两种模式下工作。

首先,在文档头中使用meta标记设置视区。这将使您的横向页面宽度为480,纵向页面宽度为320。您可以使用CSS媒体查询检查您所处的方向。

代码语言:javascript
运行
复制
<meta name="viewport" content="width=device-width; initial-scale=1, maximum-scale=1">

其次,使用CSS的background-size属性为所有图像提供视网膜图像。由于您的虚拟页面宽度是320px,因此在视网膜显示器上,每个像素实际上是2px x 2px。如果您在20x20框中提供40x40图像,视网膜显示器将按原样显示它,而非视网膜显示器将缩小像素。

代码语言:javascript
运行
复制
.my-button {
    width:  20px;
    height: 20px;
    background-image: url(retina-images/my-button-40x40.png);
    -webkit-background-size: 20px 20px;
    background-size: 20px 20px;
}

如果你使用一个图像标签,这也应该是有效的:

代码语言:javascript
运行
复制
<img src="retina-images/my-button-40x40.png" width="20" height="20">

你也许可以做更多的工作来检查实际的屏幕尺寸,并为非视网膜人群提供较小的图像,但我认为好处不会那么明显。

票数 17
EN

Stack Overflow用户

发布于 2011-10-12 15:47:25

你在Retina显示屏上使用的每个单元都是一样的,所以你需要做的就是用2x版本替换所有的图像。

您可以使用window.devicePixelRatio来检测您的web应用程序是否在Retina显示屏上运行。如果是window.devicePixelRatio > 1,那么它就是视网膜显示屏。然后,您可以替换客户端上的所有图像:

search all css and replace background-image.

  • if
  1. search all <img /> and replace src attribute.
  2. search all css and replacebackground-image.
  3. if你使用canvas,创建2倍密度,使用2倍图像。这意味着当使用100px * 100px的<canvas></canvas>元素时,将其内容设置为200px *200px。
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7733223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档