使用jquery mobile做幻燈播放效果實現步驟

來源:互聯網
上載者:User

使用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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.