使用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 相关文章推荐
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
Oct 26 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
javascript之Partial Application学习
Jan 10 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
node.js中的fs.linkSync方法使用说明
Dec 15 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 Javascript
vue数据字典取键值项目的字典问题
Apr 12 Vue.js
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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
phpmyadmin操作流程
2006/10/09 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
jQuery 使用手册(五)
2009/09/23 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
使用python绘制温度变化雷达图
2019/10/18 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
python 模拟登陆163邮箱
2020/12/15 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
会计实习生工作总结的自我评价
2013/10/07 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
暂停营业通知
2015/04/25 职场文书
怎样写家长意见
2015/06/04 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android