使用jquery mobile做幻燈播放效果實(shí)現(xiàn)步驟
更新時間:2013年01月04日 11:42:18 作者:
使用jquery mobile,可以很容易實(shí)現(xiàn)幻燈播放效果,擺脫繁雜的步驟輕松實(shí)現(xiàn),接下來介紹,有需要的朋友可以參考下
使用jquery mobile,可以很容易實(shí)現(xiàn)幻燈播放效果,下面講解下。
1、引入相關(guān)的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" />
<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、每個需要播放幻燈片的頁面基本結(jié)構(gòu)
<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、接下來是每個幻燈片之間的來回導(dǎo)航了,代碼為:
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方法來實(shí)現(xiàn)頁面的跳轉(zhuǎn),并且跳轉(zhuǎn)是帶有
跳轉(zhuǎn)效果參數(shù)的,比如:
//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');中,實(shí)際上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、對導(dǎo)航條的處理
當(dāng)每個幻燈片加載時,導(dǎo)航條自動加載到頁面的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>');
// 處理前,后頁的點(diǎn)擊按鈕
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 ) ;
// 是否存在前一頁,存在的話設(shè)置可以點(diǎn)擊的樣式
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、根據(jù)情況加載圖片
如果幻燈片很多的話,不應(yīng)該全部加載圖片,應(yīng)該先加載小的圖片,并且可以根據(jù)屏幕大小判斷用什么圖片,比如:
<img src="empty.gif" class="photo"
data-small="..."
data-large="..."/>
判斷使用方法:
var loadImages = function(slide) {
var width = $(window).width();
//根據(jù)屏幕大小判斷使用圖片大小
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);
});
};
整個運(yùn)行效果見:
http://moretechtips.googlecode.com/svn/mobile-presentation/index.htm
1、引入相關(guān)的jqury mobile類庫
復(fù)制代碼 代碼如下:
<!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" />
<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、每個需要播放幻燈片的頁面基本結(jié)構(gòu)
復(fù)制代碼 代碼如下:
<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、接下來是每個幻燈片之間的來回導(dǎo)航了,代碼為:
復(fù)制代碼 代碼如下:
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方法來實(shí)現(xiàn)頁面的跳轉(zhuǎn),并且跳轉(zhuǎn)是帶有
跳轉(zhuǎn)效果參數(shù)的,比如:
//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');中,實(shí)際上jqmData是代替了
jquery的data選擇器了。
4、還有一個就是對左右箭頭的就是鍵盤按鍵的處理了,比如:
復(fù)制代碼 代碼如下:
$(document).keydown(function(e) {
if(e.keyCode ==39) goForward(); //right
else if(e.keyCode ==37) goBack(); //left
})
.bind("swiperight", goForward )
.bind("swipeleft", goBack );
5、對導(dǎo)航條的處理
當(dāng)每個幻燈片加載時,導(dǎo)航條自動加載到頁面的footer部分,
這個要在'pagebeforecreate前加載,
復(fù)制代碼 代碼如下:
$(':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>');
// 處理前,后頁的點(diǎn)擊按鈕
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 ) ;
// 是否存在前一頁,存在的話設(shè)置可以點(diǎn)擊的樣式
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、根據(jù)情況加載圖片
如果幻燈片很多的話,不應(yīng)該全部加載圖片,應(yīng)該先加載小的圖片,并且可以根據(jù)屏幕大小判斷用什么圖片,比如:
復(fù)制代碼 代碼如下:
<img src="empty.gif" class="photo"
data-small="..."
data-large="..."/>
判斷使用方法:
復(fù)制代碼 代碼如下:
var loadImages = function(slide) {
var width = $(window).width();
//根據(jù)屏幕大小判斷使用圖片大小
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);
});
};
整個運(yùn)行效果見:
http://moretechtips.googlecode.com/svn/mobile-presentation/index.htm
您可能感興趣的文章:
- jQuery Mobile框架中的表單組件基礎(chǔ)使用教程
- jquery-mobile基礎(chǔ)屬性與用法詳解
- 使用jQueryMobile實(shí)現(xiàn)滑動翻頁效果的方法
- jquerymobile局部渲染的各種刷新方法小結(jié)
- jquery mobile實(shí)現(xiàn)撥打電話功能的幾種方法
- 讓jQuery Mobile不顯示討厭loading界面的方法
- jquery mobile頁面跳轉(zhuǎn)后樣式丟失js失效的解決方法
- jQuery Mobile彈出窗、彈出層知識匯總
- jQuery Mobile的loading對話框顯示/隱藏方法分享
- jQueryMobile之Helloworld與頁面切換的方法
- JQuery動態(tài)創(chuàng)建DOM、表單元素的實(shí)現(xiàn)代碼
- jquery-mobile表單的創(chuàng)建方法詳解
相關(guān)文章
一步一步制作jquery插件Tabs實(shí)現(xiàn)過程
自制一個簡潔的tabs插件還是有必要的在設(shè)計之前,先整理好思路,實(shí)現(xiàn)tabs,自動輪換,ajax等主要功能,然后是dom的排列形式,這里采用傳統(tǒng)的2010-07-07JQuery實(shí)現(xiàn)簡單驗證碼提示解決方案
驗證碼提示功能在ui界面的登陸及提交窗口中起到了一定的有好作用,極大的提高了用戶體驗,本文帶著這個美好的祝愿為您實(shí)現(xiàn)簡單驗證碼提示,需要的朋友可以了解下2012-12-12jQuery EasyUI API 中文文檔 - Panel面板
jQuery EasyUI API 中文文檔 - Panel面板,使用jQuery EasyUI的朋友可以參考下。2011-09-09jQuery實(shí)現(xiàn)的表頭固定效果實(shí)例【附完整demo源碼下載】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的表頭固定效果,結(jié)合完整實(shí)例形式分析了jQuery基于插件實(shí)現(xiàn)的表頭固定功能與用法,非常簡單實(shí)用,需要的朋友可以參考下2016-08-08jQuery Ajax提交表單查詢獲得數(shù)據(jù)實(shí)例代碼
用戶輸入一個表單,輸入準(zhǔn)考證和驗證碼,驗證用戶是否輸入表單,點(diǎn)擊查詢提交,然后從服務(wù)器得到返回的數(shù)據(jù)并顯示出來2012-09-09jquery.guide.js新版上線操作向?qū)хU空提示jQuery插件(推薦)
這篇文章主要介紹了jquery.guide.js新版上線操作向?qū)хU空提示jQuery插件(推薦),需要的朋友可以參考下2017-05-05jquery和css3實(shí)現(xiàn)的炫酷時尚的菜單導(dǎo)航
點(diǎn)擊列表圖表后,內(nèi)容頁面向內(nèi)移動顯示菜單項。當(dāng)單擊關(guān)閉菜單按鈕時,菜單項隱藏,內(nèi)容頁恢復(fù)原位2014-09-09