当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 使用jquery mobile做幻灯播放效果实现步骤

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

2018年09月29日  | 移动技术网IT编程  | 我要评论

使用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="https://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
<script src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>

2、每个需要播放幻灯片的页面基本结构

代码如下:

<p data-role="page" id="slide1" data-theme="a" data-transition="fade">
<p data-role="header">
<h1>slide 1</h1>
</p>
<p data-role="content">
</p>
</p>

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 = $('<p data-role="footer" data-position="fixed" data-fullscreen="true"/>').appendto(slide);
};
// add nav. bar
footer.html('<p data-role="navbar">'+
'[list]'+
'[*]<a data-icon="back"></a>
'+
'[*]<a data-icon="home"></a>
'+
'[*]<a data-icon="forward"></a>
' +
'[/list]'+
'</p>');
// 处理前,后页的点击按钮
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);
});
};

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网