jQuery Mobile入门教程

  简介:jQuery Mobile框架可以轻松的帮助我们实现非常好看的、可跨设备的Web应用程序。我们将后续的介绍中向大家介绍大量的代码及实例。

      jQuery一直以来都是非常流行的富客户端及Web应用程序开发中使用的JavaScript类库,然而一直以来它都是为桌面浏览器设计的,没有特别为移动应用程序设计。

jQuery Mobile是一个新的项目用来添补在移动设备应用上的缺憾。它是基本jQuery框架并提供了一定范围的用户接口和特性,以便于开发人员在移动应用上使用。使用该框架可以节省大量的js代码开发时间,尽管目前的版本还是不是一个稳定的版本。但它的应用效果已经备受瞩目。

      接下来我们将通过实例向大家展示jQuery Mobile的特性及好处,让我们看一下这个新框架是怎么帮助你在短时间内建立起一个高质量的移动应用程序,接下来的代码讲解中的代码最好使用的移动设备平台是IPhone或Android。或者是PC电脑上使用 Safari浏览器调试。

             

jQuery Msobile 都能做什么?

1、jQuery Mobile为开发移动应用程序提供了非常简单的用户接口

2、这种接口的配置是标签驱动的,这意味着我们可以在HTML中建立大量的程序接口而不不需要写一行js代码

3、提供了一些自定义的事件用来探测移动和触摸动作。例如tap(敲击)、tap-and-hold(点击并按住)、swipe、orientation change

4、使用一些加强的功能时需要参照一下设备浏览器支持列表

5、使用预设主题可以轻松定制应用程序外观

           

jQuery Mobile 基本页面结构

大部分jQuery Mobile Web应用程序都要遵循下面的基本模板

<!DOCTYPE html><html><head><title>jQuery Mobile基本页面结构</title><link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css"/><script type="text/javascript" src="http://code.jquery.com/jquery-1.5.min.js"></script><script type="text/javascript" src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script></head><body><div data-role="page" id="home"><div data-role="header"><h1>Header</h1></div><div data-role="content"><p>Content goes here</p></div><div data-role="footer"><h4>Footer</h4></div></div></body></html>

在android模拟器中显示效果如下:

                

代码说明

要使用 jQuery Mobile,首先需要在开发的界面中包含如下3个内容

  • CSS文件jquery.mobile-1.0a1.min.css
  • jQuery library jquery-1.4.3.min.js
  • jQuery Mobile library jquery.mobile-1.0a1.min.js

在上面的页面基本模板中,引入这三个元素采用的是jQuery CDN方式,开发人员也可以下载这些文件及主题到你的服务器上。

我们可以看到页面中的内容都是包装在div标签中并在标签中加入data-role=”page”属性。 这样jQuery Mobile就会知道哪些内容需要处理。

说明:data-属性是HTML5新推出的很有趣的一个特性,它可以让开发人员添加任意属性到html标签中,只要添加的属性名有“data-”前缀。

在”page”div中,还可以包含”header”, ”content”, ”footer”的div元素,这些元素都是可选的,但至少要包含一个 “content”div。


div dat-role=”header”></div>


在页面的顶部建立导航工具栏,用于放置标题和按钮(典型的至少要放一个“返回”按钮,用于返回前一页)。通过添加额外的属性

data-position=”fixed”,可以保证头部始终保持屏幕的顶部


<div dat-role=”content”></div>


包含一些主要内容,例如文本内容,图像,按钮,列表,表单等等


<div dat-role=”footer”></div>


在页面的底建立工具栏,添加一些功能按钮

为了确保它始终保持在页面的底部,可以给其加上data-position=”fixed” 属性

                

多个页面在同一个页面中

 有一种建立在一个 HTML页面基础之上的页面结构,即在一个页面中添加多个data-role=”page”。这意味着浏览器仅仅得到一个页面,就可以实现页面平滑切换的客户体验。参看下面实例:(目前有bug)

<!DOCTYPE html>

<html><head><title>jQuery Mobile: Pages within Pages</title><link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/><script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script></head>

<body><div data-role="page" id="home"><div data-role="header"><h1>Home</h1></div><div data-role="content"><p><a href="#about">About this app</a></p></div></div>

<div data-role="page" id="about"><div data-role="header"><h1>About This App</h1></div><div data-role="content"><p>This app rocks!<a href="#home">Go home</a></p></div></div></body>

</html>

正如所见,上面的代码中包含了两个”page”:主页(id为home)和”about”(id为about)。从Home链接到About页面采用的是连接地址为#about,about页面返回到首页的链接地址为#home。jQuery Mobile会自动切换链接的目的div显示到移动浏览器中。该框架会隐藏除第一个包含data-role=”page”div以外的其它”page”

            

AJAX 导航

      为了实现在移动设备上的无缝客户体验,jQuery Mobile默认采用AJAX的方式载入一个目的链接页面。因此,当在浏览器中点击一个链接打一个新的页面时,jQuery Mobile接收这个链接,通过AJAX的方式请求链接页面,并把请求得到的内容注入到当前页面的DOM里。另外还需要确保请求的页面url唯一标识的。

      这样的结果就是用户交互始终保存在同一个页面中。新页面中的内容也会轻松的显示到这个页面里。这种平滑的客户体验相比于传统打开一个新的页面并等待数秒的方式要好很多。当一个新的页面做为新的data-role=”page” div插入到主页面时,主页面会有效的缓存取到的内容。使得当要访问一个页面时能够尽快的显示出来。这个工作过程听起来难以置信的复杂,但是做为开发人员的我们大部份不需要了解其中工作的具体细节。只要能看到效果就OK。

注意:如果你不想采用AJAX的方式加载页面,而想以原生的页面加载方式打开一个链接页面,只需要在打开的链接上添加属性 rel=”external”属性

         

页面切换效果

你可以使用多种不同的切换效果来显示新页面内容,只需要在链接里添加data-transition属性即可。可能的值如下


slide


 从右到左切换(默认)


slideup


从下到上切换


slidedown


从上到下切换


pop


以弹出的形式打开一个页面


fade


渐变退色的方式切换


flip


旧页面翻转飞出,新页面飞入

例如 <p><a href=”#about” data-transition=”flip”>关于页面</a></p>

在浏览器中查看效果

注意:查看以上的效果需要您的浏览器支持jQuery Mobile。例如:Mobile Safari, DeskTop Safari,或Chrome

         

对话框

      通过在链接中添加data-rel=”dialog”的属性,可以使链接页面的显示方式变为对话框。给显示的对话框加入切换的效果也是一个不错的选择

      例如我们将about的链接变成一个对话框并加入相应的切换效果。代码如下

<p><a href="#about" data-rel="dialog" data-transition="slideup">About this app</a></p>

注意:目前的测试版本存在问题,当在一个页面中写多个”page”时在以dialog的方式打开一个页面时,不会出现对话框效果

             

按钮

     按钮是触摸式应用程序的一部分,它们扮演链接的功能,因为它们提供了更大的目标,当你点击链接的时候(比较适合,手指比较胖的人群)

     在jQuery Mobile中把一个链接变成button的效果,只需要在标签中添加data-role=”button属性即可”。例如:

<div data-role="content"> <p><a href="#about" data-role="button">About this app</a></p>    </div>...

<div data-role="content"> <p>This app rocks!</p><a href="#home" data-role="button">Go home</a></div>

另外jQuery Mobile也会自动的转换像表单元素中的submit,reset,button,或image为按钮样式。

还可以利用data-icon属性建立各式各样的按钮,建立行内按钮和按钮组(水平或垂直的)

       

格式化文本

为了使其尽可能的灵活,jQuery Mobile使更多的普通HTML内容更加独立。加入适当的缩进使内容的可读性更强。

有两种布局方法使其格式化变得更简单:布局表格和可折叠的内容块

  • 布局表格:组织内容以列的形式显示,有两列表格,和三列表格
  • 可折叠的内容:当点击内容块的标题,则会将其隐藏的详细内容展现出来

下面是一个可折叠内容的实例,单击标题将看到具体的内容,再点击标题则会将展现的内容隐藏。

<!DOCTYPE html>

<html>

<head><title>Collapsible Content Demo</title><link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/><script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script></head><body><div data-role="page" id="home"><div data-role="header"><h1>Home</h1></div><div data-role="content"><div data-role="collapsible" data-state="collapsed"><h3>About this app</h3><p>This app rocks!</p></div></div></div></body>

</html>

  

触摸选择的表单元素

jQuery Mobile会自动替换标准的HTML表单元素,例如文本框,复选框,列表框。以这种自定义的样式工作在触摸设备上的表单元素,易用性更强。

例如,复选框将会变得很大,易于点选。点击下拉列表时,将会弹出一组大按钮列表选项,提供给用户选择。

该框架支持新的HTML5元素,例如search和range。另外你可以利用列表框并添加data-role=”slider”并添加两个option选项,创建不错的”打开/关闭”开关,

另外一个不错的特点是组合单选框和组合复选框,可以利用fieldset元素添加属性data-role=”controlgroup”来创建一组单选按钮或复选框,jQuery Mobile自动格式化他们的格式。使它们看上去更fashion!

一般来说,开发者不需要关心表单的那些高级特性,开发者仅需要以正常的方式创建你的表单,jQuery Mobile框架会帮你完成剩余的工作。另外有一件事情需要开发人员来完成,即使用div或fieldset 属性data-role=”fieldcontain”包装每一个label/field。这样jQuery Mobile会在label/field对之间添加一个水平分割条。这样的对齐方式可以使其更容易查找。

下面是一个jQuery Mobile版的表单元素

<!DOCTYPE html>

<html>

<head>

<title>jQuery Mobile Form Demo</title>

<link rel="stylesheet"            href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/>

<script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>

<scriptsrc="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script>

</head>

<body><div data-role="page" id="home"><div data-role="header"><h1>                    Ice Cream Order Form</h1></div><div data-role="content"><form action="#" method="get"><div data-role="fieldcontain"><label for="name">                            Your Name:</label><input type="text" name="name" id="name" value=""/></div><div data-role="controlgroup"><legend>                            Which flavour(s) would you like?</legend><input type="checkbox" name="vanilla" id="vanilla" class="custom"/><label for="vanilla">                            Vanilla</label><input type="checkbox" name="chocolate" id="chocolate"                            class="custom"/>

<label for="chocolate">                            Chocolate</label><input type="checkbox" name="strawberry" id="strawberry"                            class="custom"/><label for="strawberry">                            Strawberry</label></div><div data-role="fieldcontain"><label for="quantity">                            Number of Cones:</label><input type="range" name="quantity" id="quantity" value="1"                            min="1" max="10"/></div><div data-role="fieldcontain"><label for="sprinkles">                            Sprinkles:</label><select name="sprinkles" id="sprinkles" data-role="slider"><option value="off">                                No</option><option value="on">                                Yes</option></select></div><div data-role="fieldcontain"><label for="store">                            Collect from Store:</label><select name="store" id="store"><option value="mainStreet">                                Main Street</option><option value="libertyAvenue">                                Liberty Avenue</option><option value="circleSquare">                                Circle Square</option><option value="angelRoad">                                Angel Road</option></select></div><div class="ui-body ui-body-b"><fieldset class="ui-grid-a"><div class="ui-block-a"><button type="submit" data-theme="d">                                    Cancel</button></div><div class="ui-block-b"><button type="submit" data-theme="a">                                    Order Ice Cream</button></div></fieldset></div></div></div></body></html>

        

列表视图

列表视图是jQuery Mobile中功能强大的一个特性。它会使标准的无序或有序列表应用更广泛。应用方法就是在ul或ol标签中添加data-role=”listview”属性。

下面的一些情景将会用到创建列表视图

简单的文件列表项

  • 简单的文件列表,会有一个好看的盒环绕着每一个列表项
  • 链接列表,框架会自动为每一个链接加一个箭头”>”,显示在链接按钮的右侧
  • 嵌套列表,如果你在一个li中嵌套另一个ul,jQuery Mobile会为这个嵌套列表自动建立一个”page”,并为它的父li自动加一个链接,这样很容易实现树状菜单选项,设置功能等等。
  • 分隔线的按钮列表,在一个li中存放2个链接,你可以建立一个还垂直分隔条,用户可点击左侧或右侧的列表选项,展现不同的内容
  • 记数气泡 如果你在列表选项中添加class=”ui-li-count”,框架会在其中生成一个”小泡泡”图标显现于列表选项的右侧,并在”小泡泡”中显示一些内容。类似在收信箱中看到已经收到的信息条数
  • 查找过滤 在ul或ol中添加data-filter=”true”属性。则这个列表项就具备的查询的功能。”Filter result…”文本框将会显示在列表项的上面,允许用户根据条件来将一个大的列表项变小(过滤显示)
  • 列表分隔 将列表项分割,可以在任意列表项上添加属性data-role=”list-divider
  • 列表缩略图和图标。将img元素放在在列表项的开始, jQuery Mobile将会以缩略图的形式来展现,图片的大小为80 X 80像素。如果添加class=”ui-li-icon”类样式img元素的大小将会以16 X 16像素的图标

以下是一个列表项的实例

<!DOCTYPE html>

<html>

<head>

<title>jQuery Mobile Lists Demo</title><link rel="stylesheet"            href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/><script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><scriptsrc="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script></head><body>

<div data-role="page" id="home"><div data-role="header"><h1>                    Lists Demo</h1></div><div data-role="content"><h2 style="padding: 1em 0;">                    A list view</h2><ul data-role="listview" data-inset="true"><li>                        Cat</li><li>                        Dog</li><li>                        Mouse</li><li>                        Squirrel</li></ul><h2 style="padding: 1em 0;">                    A list of links</h2><ul data-role="listview" data-inset="true"><li><a href="#">About this app</a></li><li><a href="#">Buy ice cream</a></li><li><a href="#">Find a store</a></li></ul><h2 style="padding: 1em 0;">                    Nested lists</h2><ul data-role="listview" data-inset="true"><li>                        Play<ul><li><a href="#">Easy</a></li><li><a href="#">Medium</a></li><li><a href="#">Hard</a></li></ul></li><li>                        Settings<ul><li><a href="#">Graphics</a></li><li><a href="#">Sound</a></li><li><a href="#">Device</a></li></ul></li><li>                        Highscores<ul><li><a href="#">View</a></li><li><a href="#">Submit</a></li><li><a href="#">Reset</a></li></ul></li></ul><h2 style="padding: 1em 0;">                    A split button list with filter</h2><ul data-role="listview" data-inset="true" data-filter="true"><li><a href="#">The Grapes of Wrath</a><a href="#">Buy This Book</a></li><li><a href="#">The Trial</a><a href="#">Buy This Book</a></li><li><a href="#">A Tale of Two Cities</a><a href="#">Buy This Book</a></li></ul><h2 style="padding: 1em 0;">                    A list with count bubbles</h2><ul data-role="listview" data-inset="true"><li><a href="#">SuperWidgets</a><span class="ui-li-count">14</span></li><li><a href="#">MegaWidgets</a><span class="ui-li-count">0</span></li><li><a href="#">WonderWidgets</a><span class="ui-li-count">327</span></li></ul></div></div></body>

</html>

        

主题

jQuery Mobile渲染的灰色、黑色和蓝色及圆形的组件使其看起来很漂亮,但是如果你的整个应用都使用这样的样式,将会使其变得很乏味。jQuery Mobile允许你自定义官方一些组件的主题。例如:

  • Font family
  • Drop shadows
  • 按钮和盒状元素的边框圆角半径
  • 图标组件

另外,每一个主题包含26种不同颜色的切换(标记从a 到z),可以控制前景颜色,背景色和渐变色,典型用法是使页面元素部分替换,你可以使用data-theme属性。例如:

<!DOCTYPE html> 

<html> 

<head> 

<title>Page Title</title> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/><script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script></head> 

<body> <div data-role="page" id="home"><div data-role="header"><h1>Home</h1></div><div data-role="content"> <a href="#" data-role="button" data-theme="a">About this app</a><a href="#" data-role="button" data-theme="b">About this app</a><a href="#" data-role="button" data-theme="c">About this app</a><a href="#" data-role="button" data-theme="d">About this app</a><a href="#" data-role="button" data-theme="e">About this app</a></div></div>

</body></html>

           

事件

框架还提供了简单的用户接口,并添加了移动设备支持的特殊事件。

<!DOCTYPE html> 

<html> 

<head> 

<title>jQuery Mobile Events</title> 

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.css"/><script src="http://code.jquery.com/jquery-1.4.3.min.js"></script><script src="http://code.jquery.com/mobile/1.0a1/jquery.mobile-1.0a1.min.js"></script><script type="text/javascript">

$( function() {  $('body').bind( 'taphold', function( e ) {    alert( 'You tapped and held!' );    e.stopImmediatePropagation();return false;  } );  

$('body').bind( 'swipe', function( e ) {    alert( 'You swiped!' );    e.stopImmediatePropagation();return false;  } );  

} );

</script>  </head>

<body> <div data-role="page" id="home"><div data-role="header"><h1>jQuery Mobile Events</h1></div><div data-role="content"> <p>Try:</p><ul><li>Tapping and holding</li><li>Swiping</li></ul></div></div></body></html>

 

 

 

时间: 2024-08-08 16:35:49

jQuery Mobile入门教程的相关文章

8 个最新的 jQuery Mobile 在线教程推荐

随着类库的完善,jQueryMobile必将成为移动端开发的利器之一,今天我们收集了2011年最新的8个jQuery移动开发教程,从最简单的入门介绍,到高级的开发应用案例,希望大家喜欢!   1. jQuery Mobile入门介绍   2. jQuery Mobile基本教程   3. jQuery Mobile开发简单应用   4. jQuery Mobile高级教程 - RSS阅读器应用   5. 使用PHP, MySQL和jQuery Mobile开发一个网站 第一部分  第二部分   

《jQuery Mobile入门经典》—— 1.1 为什么要使用jQuery Mobile

1.1 为什么要使用jQuery Mobile jQuery Mobile入门经典 世界正在变得可移动化.根据预测,移动网站的流量在未来几年将会超越桌面网站的流量.即使是现在,随处可以见到人们在使用移动设备来学习.购物.比价,以及在等待约会时作为消遣.移动设备如此方便,可以随意带到任何地方. 来看一下您是如何使用当前的移动设备的.即使您只拥有一台iPod Touch,我敢打赌,您肯定会通过它查看邮件.查找天气预报并且浏览少量的网页.至于您已经安装的应用,其中一部分很有可能或已经是设计精巧的Web

《jQuery Mobile入门经典》—— 第 1 章 了解jQuery Mobile

第 1 章 了解jQuery Mobile jQuery Mobile入门经典 本章将学习: 为什么要使用jQuery Mobile: 什么设备支持jQuery Mobile: 有助于开发网站的工具. 我很高兴您对jQuery Mobile感兴趣并开始学习它.首先,我们开始一个简短的讨论,看看为什么您要考虑投身于移动设计,以及为什么jQuery Mobile是最好的解决方案. 然后,您会了解到jQuery Mobile支持的不同类型的设备,并快速浏览一下jQuery Mobile支持的操作系统.

《jQuery Mobile入门经典》—— 1.2 支持的设备

1.2 支持的设备 jQuery Mobile入门经典 jQuery Mobile能用在什么设备上面呢?几乎所有具有浏览器的设备都可以运行jQuery Mobile(包括台式机).然而根据所使用的浏览器以及浏览器之下的硬件设备的不同,将获得不同的体验.当然从更深的层次来看,这也与设备所使用的操作系统有关.以下按设备的尺寸从大到小列出jQuery Mobile支持的设备. 1.2.1 台式机.笔记本电脑与一体机 使用jQuery Mobile的网站可以运行在PC.Mac或者Linux计算机上的任何

《jQuery Mobile入门经典》—— 2.3 使用JavaScript完成功能

2.3 使用JavaScript完成功能 jQuery Mobile入门经典 我们现在知道如何在网站中使内容具备样式--如果可以在访问者来查看网站的时候让某些事情发生,那可能会挺好.这就是JavaScript发挥作用的地方. 起初,在JavaScript开始引入的时候,获得了一个不好的名声.人们不理解它是什么,或者它有什么用处.我记得我的一个朋友确信他中了病毒,因为每次他访问某一网站的时候,单词会跟随他的鼠标在屏幕上围绕. 对许多人来说,JavaScript成为令人讨厌的东西,充其量不过是一个制

《jQuery Mobile入门经典》—— 1.3 开发者的宝库

1.3 开发者的宝库 jQuery Mobile入门经典 既然已经了解jQuery Mobile可以运行在几乎所有连接到网络的设备上,您可能会问一些问题,例如: 我要用什么编程语言来创建移动网站? 如果有的话,什么集成开发环境(IDE)可用于开发? 我需要安装Web服务器来开发移动网站吗? 我应该在什么平台上开发移动网站? 我可以使用免费工具做开发吗?或者开发工具会涉及费用吗? 这些都是实际而重要的问题.作为开发者,应该知道哪些工具可以使用.下面来回答每一个问题并对其进行扩展,使您明确知道开发者

《jQuery Mobile入门经典》—— 第 2 章 使用HTML、CSS和JavaScript

第 2 章 使用HTML.CSS和JavaScript jQuery Mobile入门经典 本章将学习: HTML当前的角色: 给网页添加样式的不同方法: JavaScript是什么以及如何使用它. 本章讲述有关使用HTML.CSS和JavaScript的概念和当前的趋势.这是很重要的部分,因为它在使用jQuery Mobile进行开发过程中扮演着主要的角色.使用jQuery Mobile的网站基于HTML而创建,并且尽管它们通过一个默认主题来设计样式,不过可能想把样式改为更具有个人风格.要完成

《jQuery Mobile入门经典》—— 2.7 练习

2.7 练习 jQuery Mobile入门经典 1.写一个类似于程序清单2.8的包含单击事件的简单的网页,并改变当单击触发时要发生的事情. 2.使用HTML5文档类型创建一个网页,并添加一些元素和基本的样式.在拥有的最旧和最新版本的IE浏览器中查看这个网页.注意HTML5文档类型是如何没有把IE导向到标准的"怪异"模式并仍然正确地显示网页(假如您想知道不会,HTML5文档类型不会帮您解决IE 6的双倍外边距的问题).如果没有IE浏览器或者运行在OS X或Linux上,尝试找一个旧版本

《jQuery Mobile入门经典》—— 1.7 练习

1.7 练习 jQuery Mobile入门经典 1.下载本章介绍的一些程序并安装它们.感受一下,哪一款能最好地适合个人的开发风格,哪一款满足个人或公司的预算. 2.调查一下您的国家或地区移动设备使用的接受程度和影响.熟悉您的区域的相关统计数据,对您在细分市场中是已经占领优势还是要奋起直追,能获得一个更好的认识. 3.花几分钟时间在移动设备上浏览一下网站.记下您所喜欢的,以及您希望的什么特性是这些网站已经具备的.写下有多少网站自动向您提供移动版本,哪些网站忽略了您的移动设备.另外再记录一下,您访