打造移动终端的 WebApp(一):搭建一个舞台

最近随着 Apple iOS 和 Android 平台的盛行,一个新的名词 WebApp 也逐渐火了起来,这里我也趁着热潮做一个关于 WebApp 系列的学习笔记,分享平时的一些研究以及项目中的经验,在现阶段研究对象暂时限定为 iOS 平台(iPhone/iPad/iPod touch),随后会扩展到 Android 平台。

对于 WebApp,我的理解是:它一个基于 Web 形式的应用程序,是针对智能手机、平板电脑等高性能移动设备做了特别优化的网页或网站,它相对原生应用程序(Native App)优势在于:

  1. 我们可以使用熟悉的开发环境和开发工具,当然也包括熟悉的语言:HTML+CSS+Javascript
  2. 测试方便,大多数情况下一个浏览器就OK,推荐使用Safari 5,自带的开发功能中可以模拟iphone/ipad等设备的UA
  3. 开发速度快,维护简单,更新方便。

下面开始逐步学习、探讨如何打造一个适合移动终端的 WebApp。

一、准备工作:搭建一个舞台:

首先我们已经有一个性能不错的平台——基于 Webkit 内核的 Safari 浏览器(这里指的是 iOS 中的移动版 Safari,下同),但这还不够,虽说是移动版浏览器,但在未设置、优化前,Safari 对页面的渲染方式更多的是为方便浏览 PC 网页而优化,这就难以体现 WebApp 的特点,所以我们必须通过一些设置来搭建一个属于 WebApp 的“舞台”。

PS:下面列举的代码都应放置在 HTML 文档的<head>标签内。

1.设置 viewpoint:

当我们在 Safari 中打开一个网站时,默认情况下浏览器会对网页进行缩放显示,目的是让 PC 页面能够完全展示在小屏幕设备中,而这种缩放功能会严重影响专为移动设备屏幕尺寸设计的 WebApp 的体验,所以需要通过以下代码来关闭缩放:

<meta name = "viewport" content = "user-scalable=no, width=device-width">

设置viewpoint前后效果对比:

简单了解下viewpoint的属性:

user-scalable – 用户是否可以手动缩放;
width – 定义viewport宽度(默认为980像素) ,例子中值为device-width是指设置为设备显示宽度;
height – viewport的高度;
initial-scale – 初始的缩放比例 (范围从 0 到10);
minimum-scale – 允许用户缩放到的最小比例;
maximum-scale – 允许用户缩放到的最大比例;

有关viewpoint更详细的知识请移步:viewport不权威指南

2.设置主屏幕(Spring Board)启动图标:

Safari 浏览器有一个“添加到主屏幕”的功能,用户可以像保存书签一样把一个网站添加到主屏幕,下次用户直接点击主屏幕上的图标就能进入网站。

这个功能不仅方便用户快速访问我们的网站,而且也使我们的 WebApp 更像一个原生应用,设置代码:

<link rel="apple-touch-icon" href="icon.png" />

iOS 系统会自动将图标生成具有高光、圆角和阴影效果:

如果你不想要系统自动生成的效果,可以增加rel="apple-touch-icon-precomposed"属性:

<link rel="apple-touch-icon-precomposed" href="icon.png" />

因为 iOS 分辨率,所以 icon.png 图片的尺寸也各不相同,我们可以通过sizes属性来分别定义,iOS 系统会自动获取向匹配的图片:

<!--默认为 57x57 像素-->
<link rel="apple-touch-icon" href="touch-icon-iphone.png" />
<!--iPad 1 72x72 像素-->
<link rel="apple-touch-icon" sizes="72x72" href="touch-icon-ipad.png" />
<!--iPhone 4 114x114 像素-->
<link rel="apple-touch-icon" sizes="114x114" href="touch-icon-iphone4.png" />

系统会自动选取网站title,作为名称显示在主屏图标下方,最长显示13字符。

为了在主屏达到最好的显示效果,title最好限制在六个中文长度内,超长的内容会被隐藏:

3.全屏显示 WebApp,隐藏 safari 导航栏以及工具栏:

当我们点击主屏图标打开浏览器进入 WebApp 时,默认情况下 Safari 还是会显示顶部导航栏以及底部工具栏,但这不是我们想要的结果,它们不仅不美观还减少了显示面积,所以可以用以下代码隐藏它们,让 WebApp 像原生应用一样全屏显示:

<meta name="apple-mobile-web-app-capable" content="yes" />

iPad 中的全屏显示效果,导航和工具栏已经没有了:

注:想达到全屏显示的效果必须通过主屏的图标打开网站,直接在Safari输入URL是不行的。

4.设置系统状态栏风格:

系统状态栏是 iOS 顶部显示运营商、WIFI、时间的部分,它无法隐藏,但可以设置灰、黑两种风格,设置代码如下:

<meta name="apple-mobile-web-app-status-bar-style" content="grey" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />

5.启动画面设置:

当用户点击主屏图标打开 WebApp 时,系统会展示启动画面,在未设置情况下系统会默认显示该网站的首页截图,当然这个体验不是很好,所以我们需要通过以下代码来自定义启动画面:

<link rel="apple-touch-startup-image" href="Startup.png" />

[2012.11.20]更新
与启图标类似,根据 iOS 设备的分辨率,其启动画面的图片尺寸也各不相同:

iPhone 3GS(及以前机型):320×460 像素
iPhone 4、4S:640×920 像素
iPhone 5:1096×640 像素

iPad 1、2:768×1004 像素
New iPad:–
iPad mini —

注:如果图片尺寸不对将无法显示。

[2011.2.1]更新
如果想让一个 WebApp 在 iPhone 和 iPad 中同时具有启动画面,我们可以借助 Javascript 脚本来完成,通过判断设备navigator.userAgent信息,来更改href的值指向对应的图片路径:

//jQuery
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/iPad/i)=="ipad") {
   $("link[rel=apple-touch-startup-image]").attr("href","images/startup_ipad.png");
}

其他细节设置:

屏蔽iPhone下的拨号链接
iPhone 下会自动将连串数字转换为拨号超链接,如果没特别的需要还是将这个功能屏蔽为好:

<meta name="format-detection" content="telephone=no"/>

至此一个专属于 WebApp 的“舞台”就初步搭建完成了,当然这里也留下很多疑问,比如说iPhone与iPad分辨率差距很大,那么如何为它们分别设置启动画面、布局样式以及横屏竖屏的问题等,这些细节将在下一章讨论。

时间: 2024-10-13 17:37:12

打造移动终端的 WebApp(一):搭建一个舞台的相关文章

如何快速搭建一个完整的移动直播系统?

移动直播行业的火热会在很长一段时间内持续,通过和各行业的整合,从而成为具有无限可能性的行业.主要因为以下三个原因: 第一,移动直播的UGC生产模式比PC端的直播更明显,人人都有设备,随时随地开播,完全顺应了互联网时代的开放性原则,能刺激更多人去创造和传播优质内容. 第二,网络带宽和速度在逐渐提高,网络成本在逐渐下降,为移动直播提供一个极佳的发展环境.文字.声音.视频.游戏等都会在移动直播中呈现,创造出更加丰富的用户体验.直播可以以SDK的形式接入到自己的应用中,比如,教育领域中的课后辅导完全可以

Parse 和 Swift 搭建一个像 Instagram

如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用? [编者按]本篇文章作者是Reinder de Vries,既是一名企业家,也是优秀的程序员,发表多篇应用程序的博客.本篇文章中,作者主要介绍了如何基于Parse特点,打造一款类似Instagram的应用,完整而清晰的步骤,为开发者提供一次绝佳的学习体验.本文系 OneAPM 工程师编译整理. Parse 是一个移动应用开发平台,旗下有个很有意思的产品:Parse Core.它的特色之一是允许应用开发者直接将数据存储

如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?

[编者按]本篇文章作者是Reinder de Vries,既是一名企业家,也是优秀的程序员,发表多篇应用程序的博客.本篇文章中,作者主要介绍了如何基于Parse特点,打造一款类似Instagram的应用,完整而清晰的步骤,为开发者提供一次绝佳的学习体验.本文系 OneAPM 工程师编译整理. Parse 是一个移动应用开发平台,旗下有个很有意思的产品:Parse Core.它的特色之一是允许应用开发者直接将数据存储在云端,而无需担心设置服务器或重新设计一个 REST API.Parse Core

搭建一个java web服务端

最近也是做了一个简单的java web 项目,由于以前也是没接触过,在这里记录下搭建一个web服务端的过程. 一般我们做一个服务端要么在本地自己的电脑上先安装环境,一般是windows系统,主要安装jdk + tomcat + mysql,这些安装教程网上都有,也很简单,我这里就不多说了,我要讲的是在一个远程linux服务器上搭建web服务端环境. 对于一个liunx服务器,我们可以使用xshell等终端工具登录来操作远程服务器,使用xshell的好处是,我们可以使用rz ,sz命令上传上载文件

用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(下)-搭建Hadoop集群

上篇:用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(上)-快速上手Docker 上篇介绍了快速上手Docker部分,下面接着介绍搭建Hadoop集群部分. 六.搭建Hadoop伪分布模式 我们先用前面创建的这个容器来搭建Hadoop伪分布模式做测试,测试成功后再搭建完全分布式集群. 1.SSH这个centos容器可以看做是一个非常精简的系统,很多功能没有,需要自己安装.Hadoop需要SSH,但容器没有自带,需要我们安装.①安装SSH # yum -y ins

搭建一个webpack微服务器

[前言]:因为最近在vue2.0的时候用到了webpack的externals,才发现我之前都只是用webpack做一些搭建完项目后的"收尾工作"--即打包,而没有把它纳入到项目开发的"主体过程"中来,真是"物不尽其用".于是就有了我今天的这篇学习文章:利用webpack-dev-server搭建一个webpack的服务器 参考资料: webpack-dev-server的github地址:https://github.com/webpack/w

[转]Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

本文转自:http://www.blogjava.net/yongboy/archive/2013/12/12/407498.html 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续

如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(3)

[编者按]本篇文章作者是 Reinder de Vries,既是一名企业家,也是优秀的程序员,发表多篇应用程序的博客.本篇文章中,作者主要介绍了如何基于 Parse 特点,打造一款类似 Instagram 的应用,完整而清晰的步骤,为开发者提供一次绝佳的学习体验.本文系 OneAPM 工程师编译整理,这是本系列的第 3 篇文章. 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?(1) 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?

在Linux中搭建一个FTP服务器

在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/ftp/ftp2. 两个小组互相不能访问各自的文件,需要限制用户不能离开自己的工作目录. [实现步骤] 1.检查安装vsftpd服务器 以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep