这篇文章是使用 jQuery Mobile 与 HTML5 开发 Web App 系列的第二篇,在本文以及接下来的数篇文章 Kayo 将会介绍 jQuery Mobile 的组件、事件响应以及能够调用的方法,而做为该系列的第一篇文章,Kayo 将会先介绍 jQuery Mobile 的基本状况和一些基础的实例。javascript
在上一篇文章中, Kayo 简单介绍了渐进加强设计的概念,能够参考文中的第四点内容。而 jQuery Mobile 虽然是一些新 web 技术( HTML五、CSS3 和 JavaScript )的产物,但对于不能提供以上技术支持的设备也会尽可能提供最好的体验。css
根据维基百科( Wikipedia ) 的解释,渐进加强的设计主要包括如下几点html
由于 jQuery Mobile 使用了渐进加强的设计理念,于是它所支持的系统与平台也很普遍,能提供 A 级支持(支持所有的加强的体验,包括基于 Ajax 的动画页面转场)的有如下平台:html5
Apple iOS 3.2-5.0java
Android 2.1-2.3 , 3.1, 4.0jquery
Windows Phone 7-7.5web
Blackberry 6.0 , 7浏览器
Blackberry Playbook 1.0-2.0app
Palm WebOS 1.4-2.0 , 3.0ide
Firebox Mobile (10 Beta)
Skyfire 4.1
Opera Mobile 11.5
Meego 1.2
Samsung bada 2.0
Kindle 3 and Fire
Nook Color 1.4.1
Chrome Desktop 11-17
Firefox Desktop 4-9
Internet Explorer 7-9
Opera Desktop 10-11
注:若在实际的开发中使用到 Web SQL Database 等 HTML5 技术,则最终的 Web App 被支持度会比以上 jQuery Mobile 的被支持度低,但两个主流的移动浏览器 Android 与 Apple iOS 的系统浏览器及其桌面版本确定能提供最好的支持。
jQuery Mobile 依赖 HTML5 data-* 属性 来提供一系列的支持( UI 组件、过渡和页面结构),不支持该 HTML5 属性的浏览器会默认忽略这些属性的效果,好比在页面中添加一个版头,能够使用如下的 HTML:
1
2
3
|
<
div
data-role
=
"header"
>
<
h1
>jQuery Mobile Demo</
h1
>
</
div
>
|
这样就能产生一个 jQuery Mobile 样式的版头,从下文的图中能够看出,这样的版头样式很适合移动设备使用,而且在添加 data-role="header" 属性后,div 内的 h1 也会被渲染成必定样式,这就是 jQuery Mobile 的方便快捷,也是它的设计宗旨—— Write Less, Do More 。
除此以外 jQuery Mobile 中还有如下的 data-role 属性(部分属性),已经赋予了必定的样式及用户操做响应效果。
data-role="content" , data-role="button" , data-theme ="" , data-role="controlgroup" , data-inline="true" , data-role="fieldcontain" , data-role="listview" , data-rel="dialog" , data-transition="pop" ,分别对应着主体内容、按钮,主题颜色,已编辑按钮,内联按钮,表单元素,列表视图,对话框,页面过渡。
使用 jQuery Mobile ,须要在网页页眉中引入 jQuery Mobile 组件,包括如下部分
jQuery 库
jQuery Mobile CSS
jQuery Mobile 库
能够经过这样的 head 引入以上组件
1
2
3
4
5
6
7
8
|
<
head
>
<
title
>jQuery Mobile Demo</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
/>
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1"
>
<
link
rel
=
"stylesheet"
href
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css"
/>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/jquery-1.6.4.min.js"
></
script
>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"
></
script
>
</
head
>
|
在 Android 的浏览器中,若没有设定页面宽度,它会认为页面宽度是 980px ,所以咱们能够在 head 里加入一个 viewport,让移动浏览器知道屏幕大小,只是一个 viewport 标签,就已经给用户带来更好的体验。
1
|
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1, maximum-scale=1.5"
>
|
在引入 jQuery Mobile 须要的组件后,咱们能够建立 jQuery Mobile 页面,下面给出一个简单的例子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
>jQuery Mobile Demo</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
/>
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1"
>
<
link
rel
=
"stylesheet"
href
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css"
/>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/jquery-1.6.4.min.js"
></
script
>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"
></
script
>
</
head
>
<
body
>
<
div
data-role
=
"page"
id
=
"home"
>
<
div
data-role
=
"header"
>
<
h1
>jQuery Mobile Demo</
h1
>
</
div
>
<
div
data-role
=
"content"
>
<
p
>主体内容</
p
>
</
div
>
<
div
data-role
=
"footer"
>
<
h2
>Footer</
h2
>
</
div
>
</
div
>
</
body
>
</
html
>
|
对于 jQuery Mobile ,每定义一个 data-role="page" 就至关于一个页面, jQuery Mobile 默认采用 Ajax 的方式操做 DOM,自动隐藏除第一个页面外的全部页面,当点击连接,连接到其余页面时会以 Ajax 的方式加载新页面的内容,下面给出完整实例。另外,咱们还能够使用一些 HTML5 的语义化标签,如 header 的 div 能够直接使用 header 标签,具体的能够参见下面的例子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
>jQuery Mobile Demo</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=UTF-8"
/>
<
meta
name
=
"viewport"
content
=
"width=device-width, initial-scale=1"
>
<
link
rel
=
"stylesheet"
href
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css"
/>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/jquery-1.6.4.min.js"
></
script
>
<
script
type
=
"text/javascript"
src
=
"http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"
></
script
>
</
head
>
<
body
>
<
div
data-role
=
"page"
id
=
"home"
>
<
header
data-role
=
"header"
>
<
h1
>jQuery Mobile Demo</
h1
>
</
header
>
<
div
data-role
=
"content"
>
<
a
href
=
"#page2"
data-role
=
"button"
>列表页面</
a
>
</
div
>
<
footer
data-role
=
"footer"
>
<
h2
>Footer</
h2
>
</
footer
>
</
div
>
<
div
data-role
=
"page"
id
=
"page2"
>
<
header
data-role
=
"header"
>
<
h1
>jQuery Mobile Demo</
h1
>
</
header
>
<
div
data-role
=
"content"
>
<
ul
data-role
=
"listview"
data-inset
=
"true"
>
<
li
><
a
href
=
"#home"
>回到首页</
a
></
li
>
<
li
><
a
href
=
"#home"
>回到首页</
a
></
li
>
<
li
><
a
href
=
"#home"
>回到首页</
a
></
li
>
</
ul
>
</
div
>
<
footer
data-role
=
"footer"
>
<
h2
>Footer</
h2
>
</
footer
>
</
div
>
</
body
>
</
html
>
|
完整实例 Demo(建议使用 PC 上的 Firefox、Chrome 等现代浏览器和 IE9+ 或 Android , iPhone/iPad 的系统浏览器浏览)
本文由 Kayo Lee 发表,本文连接:http://kayosite.com/web-app-by-jquery-mobile-and-html5-foundation.html