使用jquery mobile做幻灯播放效果实现步骤


Posted in Javascript onJanuary 04, 2013

使用jquery mobile,可以很容易实现幻灯播放效果,下面讲解下。
1、引入相关的jqury mobile类库

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<meta name="viewport" content="width=device-width, initial-scale=1" /> 
<title> jQuery Mobile Presentation</title> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" /> 
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>

2、每个需要播放幻灯片的页面基本结构
<div data-role="page" id="slide1" data-theme="a" data-transition="fade"> 
<div data-role="header"> 
<h1>Slide 1</h1> 
</div> 
<div data-role="content"> 
</div> 
</div>

3、接下来是每个幻灯片之间的来回导航了,代码为
var changeSlide = function(toSlide){ 
if(toSlide.length) 
$.mobile.changePage( toSlide, { transition: toSlide.jqmData('transition') } ); 
}; 
// 返回主页 
var getHomeSlide = function(){ 
return $(':jqmData(role=page):first'); 
}; 
// go home 
var goHome = function(){ 
changeSlide( getHomeSlide() ); 
return false; 
}; 
// 到下一页 
var getNextSlide = function(slide){ 
return slide.next(':jqmData(role=page)'); 
}; 
//到下一页 
var goForward = function(){ 
changeSlide( getNextSlide($.mobile.activePage) ); 
return false; 
}; 
// 获得前一个页面 
var getPrevSlide = function(slide){ 
return slide.prev(':jqmData(role=page)'); 
}; 
// 跳到前一个页面 
var goBack = function(){ 
changeSlide( getPrevSlide($.mobile.activePage) ); 
return false; 
};

注意一下,使用了 $.mobile.changePage方法来实现页面的跳转,并且跳转是带有
跳转效果参数的,比如:
//transition to the "about us" page with a slideup transition
$.mobile.changePage( "about/us.html", { transition: "slideup"} );
//transition to the "search results" page, using data from a form with an id of "search"
$.mobile.changePage( "searchresults.php", {
type: "post",
data: $("form#search").serialize()
});
而return $(':jqmData(role=page):first');中,实际上jqmData是代替了
jquery的data选择器了。
4、还有一个就是对左右箭头的就是键盘按键的处理了,比如
$(document).keydown(function(e) { 
if(e.keyCode ==39) goForward(); //right 
else if(e.keyCode ==37) goBack(); //left 
}) 
.bind("swiperight", goForward ) 
.bind("swipeleft", goBack );

5、对导航条的处理
当每个幻灯片加载时,导航条自动加载到页面的footer部分,
这个要在'pagebeforecreate前加载,
$(':jqmData(role=page)').live( 'pagebeforecreate',function(event){ 
var slide = $(this); 
// 找到footer 
var footer = $(":jqmData(role=footer)", slide ); 
if( !footer.length ) { 
//添加到页面底部 
footer = $('<div data-role="footer" data-position="fixed" data-fullscreen="true"/>').appendTo(slide); 
}; 
// add nav. bar 
footer.html('<div data-role="navbar">'+ 
'[list]'+ 
'[*]<a data-icon="back"></a> 
'+ 
'[*]<a data-icon="home"></a> 
'+ 
'[*]<a data-icon="forward"></a> 
' + 
'[/list]'+ 
'</div>'); 
// 处理前,后页的点击按钮 
var backButton = $(':jqmData(icon=back)', footer).click( goBack ); 
var homeButton = $(':jqmData(icon=home)', footer).click( goHome ); 
var forwardButton = $(':jqmData(icon=forward)', footer).click( goForward ); 
// 获得前,后,主页 
var prevSlide = getPrevSlide( slide ), homeSlide = getHomeSlide(), nextSlide = getNextSlide( slide ) ; 
// 是否存在前一页,存在的话设置可以点击的样式 
if( prevSlide.length ) { 
backButton.attr('href', '#'+ prevSlide.attr('id') ); 
homeButton.attr('href', '#'+ homeSlide.attr('id') ) 
}else{ 
//禁止其按钮 
backButton.addClass('ui-disabled'); 
homeButton.addClass('ui-disabled') 
}; 
// 是否存在后一页 
if( nextSlide.length ) { 
forwardButton.attr('href', '#'+ nextSlide.attr('id') ) 
}else{ 
// 禁止其按钮 
forwardButton.addClass('ui-disabled') 
}; 
//......... 
});

6、根据情况加载图片
如果幻灯片很多的话,不应该全部加载图片,应该先加载小的图片,并且可以根据屏幕大小判断用什么图片,比如:
<img src="empty.gif" class="photo" 
data-small="..." 
data-large="..."/>

判断使用方法
var loadImages = function(slide) { 
var width = $(window).width(); 
//根据屏幕大小判断使用图片大小 
var attrName = width > 480? 'large' : 'small'; 
$('img:jqmData('+attrName+')', slide).each(function(){ 
var img = $(this); 
var source = img.jqmData(attrName); 
if(source) img.attr('src', source).jqmRemoveData(attrName); 
}); 
};

整个运行效果见:
http://moretechtips.googlecode.com/svn/mobile-presentation/index.htm
Javascript 相关文章推荐
一个可拖拽列宽表格实例演示
Nov 26 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
JavaScript中的console.assert()函数介绍
Dec 29 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
JS实现动态增加和删除li标签行的实例代码
Oct 16 Javascript
jQuery中 bind的用法简单介绍
Feb 13 Javascript
详解vue项目构建与实战
Jun 27 Javascript
JS原型继承四步曲及原型继承图一览
Nov 28 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
Js跳出两级循环方法代码实例
Sep 22 Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 #Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 #Javascript
表单的焦点顺序tabindex和对应enter键提交
Jan 04 #Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 #Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 #Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 #Javascript
密码强度检测效果实现原理与代码
Jan 04 #Javascript
You might like
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Python基础入门之seed()方法的使用
2015/05/15 Python
python rsa 加密解密
2017/03/20 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
后勤部经理岗位职责
2014/02/23 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
大学学生个人总结
2015/02/15 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript