欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-07 09:39:46
使用jquery mobile,可以很容易实现幻灯播放效果,下面讲解下。 1、引入相关的jqury mobile类库 代码如下: ...

使用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);
});
};