jackyrong 发表于 2013-1-29 13:27:28

使用jquery 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="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 homevar 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">'+               '
'+                  '
[*]<a data-icon="back"></a>'+                  '
[*]<a data-icon="home"></a>'+                  '
[*]<a data-icon="forward"></a>' +               '
'+            '</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')   };   //.........});


5 根据情况加载图片
   如果幻灯片很多的话,不应该全部加载图片,应该先加载小的图片,并且可以根据屏幕大小判断用什么图片,比如:
<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
页: [1]
查看完整版本: 使用jquery mobile做幻灯播放效果