Heim >Web-Frontend >js-Tutorial >使用jquery mobile做幻灯播放效果实现步骤_jquery

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

WBOY
WBOYOriginal
2016-05-16 17:44:361493Durchsuche

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

复制代码 代码如下:






jQuery Mobile Presentation




2、每个需要播放幻灯片的页面基本结构
复制代码 代码如下:



Slide 1







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 = $('
').appendTo(slide);
};
// add nav. bar
footer.html('
'+
'[list]'+
'[*]
'+
'[*]
'+
'[*]
' +
'[/list]'+
'
');
// 处理前,后页的点击按钮
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、根据情况加载图片
如果幻灯片很多的话,不应该全部加载图片,应该先加载小的图片,并且可以根据屏幕大小判断用什么图片,比如:
复制代码 代码如下:

使用jquery mobile做幻灯播放效果实现步骤_jquerydata-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
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn