亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

移動端H5開發 Turn.js實現很棒的翻書效果

2019-11-20 09:40:01
字體:
來源:轉載
供稿:網友

最近CTO給我分配了一個移動端H5開發的任務,主要功能是需要實現翻書效果,我聽過主要需求后,當時是呀?。。〗酉聛碜约簢L試使用 fullPage.js和Swiper來實現翻書效果,結果效果都不是非常的理想,后來想起自己曾經做過PC版的翻書效果,當時使用的是Turn.js ,查過其相關API后,整個人突然豁然開朗呀,使用Turn.js 完全可以解決當前我接手這個項目的所有需求呀?,F在將個人的學習總結如下,若有不正確的地方,歡迎讀者給與批評指正!
Turn.js的官方網址: http://www.turnjs.com/
下面是我這個項目上線后的效果: 

 看過實際項目后,各位看官是不是已經迫不及待的想知道這個項目是如何實現,看官莫急,接下來我就詳細的介紹下我的開發過程:
1、需要引入的腳本文件     

<link rel="stylesheet" type="text/css" href="css/basic.css"/><script type="text/javascript" src="js/jquery.js"></script><script type="text/javascript" src="js/modernizr.2.5.3.min.js"></script><script type="text/javascript" src="js/main.js"></script> 

2、html部分代碼

<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/> <meta name="format-detection" content="telephone=no"> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <title>Turn.js 實現翻書效果</title> <link rel="stylesheet" type="text/css" href="css/basic.css"/> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/modernizr.2.5.3.min.js"></script> <script type="text/javascript" src="js/main.js"></script></head><body><div class="shade"> <div class="sk-fading-circle"> <div class="sk-circle1 sk-circle"></div> <div class="sk-circle2 sk-circle"></div> <div class="sk-circle3 sk-circle"></div> <div class="sk-circle4 sk-circle"></div> <div class="sk-circle5 sk-circle"></div> <div class="sk-circle6 sk-circle"></div> <div class="sk-circle7 sk-circle"></div> <div class="sk-circle8 sk-circle"></div> <div class="sk-circle9 sk-circle"></div> <div class="sk-circle10 sk-circle"></div> <div class="sk-circle11 sk-circle"></div> <div class="sk-circle12 sk-circle"></div> </div> <div class="number"></div></div><div class="flipbook-viewport" style="display:none;"> <div class="previousPage"></div> <div class="nextPage"></div> <div class="return"></div> <img class="btnImg" src="./image/btn.gif" style="display: none"/> <div class="container"> <div class="flipbook"> </div> </div></div><script> //自定義仿iphone彈出層 (function ($) { //ios confirm box jQuery.fn.confirm = function (title, option, okCall, cancelCall) {  var defaults = {  title: null, //what text  cancelText: '取消', //the cancel btn text  okText: '確定' //the ok btn text  };  if (undefined === option) {  option = {};  }  if ('function' != typeof okCall) {  okCall = $.noop;  }  if ('function' != typeof cancelCall) {  cancelCall = $.noop;  }  var o = $.extend(defaults, option, {title: title, okCall: okCall, cancelCall: cancelCall});  var $dom = $(this);  var dom = $('<div class="g-plugin-confirm">');  var dom1 = $('<div>').appendTo(dom);  var dom_content = $('<div>').html(o.title).appendTo(dom1);  var dom_btn = $('<div>').appendTo(dom1);  var btn_cancel = $('<a href="#"></a>').html(o.cancelText).appendTo(dom_btn);  var btn_ok = $('<a href="#"></a>').html(o.okText).appendTo(dom_btn);  btn_cancel.on('click', function (e) {  o.cancelCall();  dom.remove();  e.preventDefault();  });  btn_ok.on('click', function (e) {  o.okCall();  dom.remove();  e.preventDefault();  });  dom.appendTo($('body'));  return $dom; }; })(jQuery); //上一頁 $(".previousPage").bind("touchend", function () { var pageCount = $(".flipbook").turn("pages");//總頁數 var currentPage = $(".flipbook").turn("page");//當前頁 if (currentPage >= 2) {  $(".flipbook").turn('page', currentPage - 1); } else { } }); // 下一頁 $(".nextPage").bind("touchend", function () { var pageCount = $(".flipbook").turn("pages");//總頁數 var currentPage = $(".flipbook").turn("page");//當前頁 if (currentPage <= pageCount) {  $(".flipbook").turn('page', currentPage + 1); } else { } }); //返回到目錄頁 $(".return").bind("touchend", function () { $(document).confirm('您確定要返回首頁嗎?', {}, function () {  $(".flipbook").turn('page', 1); //跳轉頁數 }, function () { }); });</script></body></html>

3、主要js實現部分

/** * Created by ChengYa on 2016/6/18. *///判斷手機類型window.onload = function () { //alert($(window).height()); var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手機 } else if (u.indexOf('iPhone') > -1) {//蘋果手機 //屏蔽ios下上下彈性 $(window).on('scroll.elasticity', function (e) {  e.preventDefault(); }).on('touchmove.elasticity', function (e) {  e.preventDefault(); }); } else if (u.indexOf('Windows Phone') > -1) {//winphone手機 } //預加載 loading();}var date_start;var date_end;date_start = getNowFormatDate();//加載圖片var loading_img_url = [ "./image/0001.jpg", "./image/0002.jpg", "./image/0003.jpg", "./image/0004.jpg", "./image/0005.jpg", "./image/0006.jpg", "./image/0007.jpg", "./image/0008.jpg", "./image/0009.jpg", "./image/0010.jpg", "./image/0011.jpg", "./image/0012.jpg", "./image/0013.jpg", "./image/0014.jpg", "./image/0015.jpg", "./image/0016.jpg", "./image/0017.jpg", "./image/0018.jpg", "./image/0019.jpg", "./image/0020.jpg", "./image/0021.jpg", "./image/0022.jpg", "./image/0023.jpg", "./image/0024.jpg", "./image/0025.jpg", "./image/0026.jpg", "./image/0027.jpg", "./image/0028.jpg", "./image/0029.jpg", "./image/0030.jpg", "./image/0031.jpg", "./image/0032.jpg", "./image/0033.jpg", "./image/0034.jpg", "./image/0035.jpg", "./image/0036.jpg", "./image/0037.jpg", "./image/0038.jpg", "./image/0039.jpg", "./image/0040.jpg", "./image/0041.jpg",];//加載頁面function loading() { var numbers = 0; var length = loading_img_url.length; for (var i = 0; i < length; i++) { var img = new Image(); img.src = loading_img_url[i]; img.onerror = function () {  numbers += (1 / length) * 100; } img.onload = function () {  numbers += (1 / length) * 100;  $('.number').html(parseInt(numbers) + "%");  console.log(numbers);  if (Math.round(numbers) == 100) {  //$('.number').hide();  date_end = getNowFormatDate();  var loading_time = date_end - date_start;  //預加載圖片  $(function progressbar() {   //拼接圖片   $('.shade').hide();   var tagHtml = "";   for (var i = 1; i <= 41; i++) {   if (i == 1) {    tagHtml += ' <div id="first" style="background:url(image/00' + (i < 10 ? '0' + i : i) + '.jpg) center top no-repeat;background-size:100%"></div>';   } else if (i == 41) {    tagHtml += ' <div id="end" style="background:url(image/00' + (i < 10 ? '0' + i : i) + '.jpg) center top no-repeat;background-size:100%"></div>';   } else {    tagHtml += ' <div style="background:url(image/00' + (i < 10 ? '0' + i : i) + '.jpg) center top no-repeat;background-size:100%"></div>';   }   }   $(".flipbook").append(tagHtml);   var w = $(".graph").width();   $(".flipbook-viewport").show();  });  //配置turn.js  function loadApp() {   var w = $(window).width();   var h = $(window).height();   $('.flipboox').width(w).height(h);   $(window).resize(function () {   w = $(window).width();   h = $(window).height();   $('.flipboox').width(w).height(h);   });   $('.flipbook').turn({   // Width   width: w,   // Height   height: h,   // Elevation   elevation: 50,   display: 'single',   // Enable gradients   gradients: true,   // Auto center this flipbook   autoCenter: true,   when: {    turning: function (e, page, view) {    if (page == 1) {     $(".btnImg").css("display", "none");     $(".mark").css("display", "block");    } else {     $(".btnImg").css("display", "block");     $(".mark").css("display", "none");    }    if (page == 41) {     $(".nextPage").css("display", "none");    } else {     $(".nextPage").css("display", "block");    }    },    turned: function (e, page, view) {    console.log(page);    var total = $(".flipbook").turn("pages");//總頁數    if (page == 1) {     $(".return").css("display", "none");     $(".btnImg").css("display", "none");    } else {     $(".return").css("display", "block");     $(".btnImg").css("display", "block");    }    if (page == 2) {     $(".catalog").css("display", "block");    } else {     $(".catalog").css("display", "none");    }    }   }   })  }  yepnope({   test: Modernizr.csstransforms,   yep: ['js/turn.js'],   complete: loadApp  });  }  ; } }}function getNowFormatDate() { var date = new Date(); var seperator1 = ""; var seperator2 = ""; var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + "" + date.getHours() + seperator2 + date.getMinutes() + seperator2 + date.getSeconds(); return currentdate;}

4、最終實現結果

注:圖片是從網上隨便下載的,所以圖片的尺寸不規范,導致在手機上瀏覽時圖片不是很完整【不是因為代碼寫的有問題哦】 !!! 代碼打包中沒有加入真實項目中的圖片,如需看到最佳的效果,建議圖片尺寸設計為:750*1217,由于個人的時間和精力有限,我寫的這個Demo使用的圖片就沒有將圖片一一修改為750*1217的尺寸。

源碼下載:http://xiazai.VeVB.COm/201606/yuanma/Turn.js-fanshu(VeVB.COm).rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
96sao精品视频在线观看| 成人久久精品视频| 亚洲精品国产成人| 国产精品一区二区三区久久久| 国产视频精品免费播放| 日韩激情第一页| 成人国产精品av| 午夜免费在线观看精品视频| 欧美久久精品一级黑人c片| 国产精品视频自在线| 一区二区日韩精品| 国产成人久久久精品一区| 高清欧美性猛交xxxx| 国产精品视频地址| 成人疯狂猛交xxx| 国产日韩欧美夫妻视频在线观看| 成人激情电影一区二区| 亚洲精品欧美日韩| 成人妇女免费播放久久久| 亚洲精品中文字幕av| 久久久久久免费精品| 久久国产精品久久久久久久久久| 国产美女直播视频一区| 国模gogo一区二区大胆私拍| 日韩精品视频在线观看免费| 97在线精品视频| 久久久电影免费观看完整版| 久久99久国产精品黄毛片入口| 欧美日韩电影在线观看| 中文亚洲视频在线| 亚洲欧美日韩精品久久| 国产精品久久久久久久一区探花| 欧美激情精品久久久久久黑人| 国产成人在线亚洲欧美| 成人激情视频在线观看| 国产在线精品自拍| 国产成人在线一区二区| 永久免费毛片在线播放不卡| 欧美一级淫片aaaaaaa视频| 北条麻妃一区二区在线观看| 最近2019中文字幕第三页视频| 亚洲一区av在线播放| 亚洲欧美成人一区二区在线电影| 国产成人在线视频| 国产精品第100页| 久久激情视频久久| 欧美理论电影在线播放| 欧美老肥婆性猛交视频| 亚洲综合精品一区二区| 亚洲精品一区二区网址| 懂色av影视一区二区三区| 国产亚洲欧美一区| 亚洲成人精品久久久| 亚洲视频一区二区三区| 亚洲色图18p| 亚洲综合中文字幕在线观看| 日韩电影免费在线观看| 成人福利视频在线观看| 日韩av日韩在线观看| 久久天天躁日日躁| 久久夜色精品国产亚洲aⅴ| 欧美日韩中文字幕在线视频| 国产精品狼人色视频一区| 日韩电影免费观看在线| 国产盗摄xxxx视频xxx69| 96国产粉嫩美女| 成人免费大片黄在线播放| 秋霞av国产精品一区| 91九色视频在线| 日韩中文字幕国产精品| 亚洲最大av网| 国产日韩在线观看av| 午夜精品视频在线| 国产免费成人av| 欧美精品激情blacked18| 亚洲男人7777| 91精品国产精品| 国产精品va在线播放我和闺蜜| 国内精品模特av私拍在线观看| 日韩电视剧在线观看免费网站| 亚洲小视频在线观看| 国产激情久久久| 久久久精品2019中文字幕神马| 欧美日韩国产精品一区| 精品久久香蕉国产线看观看gif| 欧美中文字幕在线播放| 亚洲毛片在线观看| 亚洲国产精品小视频| 91高清视频在线免费观看| 欧美精品xxx| 国产极品精品在线观看| 欧美一区二区三区艳史| 亚洲成人精品久久久| 国产亚洲综合久久| 亚洲毛茸茸少妇高潮呻吟| 欧美精品videos性欧美| 久久影院免费观看| 国产精品成人久久久久| 国产自产女人91一区在线观看| 91精品免费久久久久久久久| 少妇久久久久久| 亚洲va国产va天堂va久久| 国产极品精品在线观看| 色偷偷亚洲男人天堂| 亚洲一区精品电影| 亚州av一区二区| 精品久久久久国产| 日韩电影网在线| 日韩av片电影专区| 国产成人在线视频| 最近2019年日本中文免费字幕| 亚洲成人av片在线观看| 欧美午夜精品伦理| 91久热免费在线视频| 欧美精品videos性欧美| 亚洲国产欧美日韩精品| 97在线免费观看视频| 欧美久久精品一级黑人c片| 国产精品入口夜色视频大尺度| 久久男人av资源网站| 青青草国产精品一区二区| 国产精品久久久久77777| 亚洲人成绝费网站色www| xvideos成人免费中文版| 国产成人精品在线播放| 亚洲综合色av| 国产精品老牛影院在线观看| 久久久综合av| 欧美极品少妇xxxxⅹ喷水| 亚洲成人av在线播放| 欧美性猛交xxxx免费看久久久| 国产一区视频在线播放| 亚洲最大的成人网| 日韩av大片免费看| 国产精品亚发布| www.日本久久久久com.| 国产99视频在线观看| 亚洲欧美日韩爽爽影院| 日韩电影中文 亚洲精品乱码| 日韩在线欧美在线国产在线| 欧美成人激情视频| 国产精品免费视频久久久| 久久国产精品久久久| 亚洲色图五月天| 亚洲大胆人体在线| 国产成人精品午夜| 日韩免费在线观看视频| 亚洲精品美女在线观看播放| 亚洲精品黄网在线观看| 91免费视频国产| 欧美激情欧美狂野欧美精品| 91久久久在线| 久久久久久久久久久免费精品| 91沈先生在线观看| 亚洲999一在线观看www| 欧美限制级电影在线观看| 久久国产精品首页| 亚洲美女福利视频网站| 亚洲欧美制服另类日韩| 欧美激情亚洲一区| 国产成人精品在线视频| 亚洲综合小说区| 欧洲亚洲免费视频| 精品日本美女福利在线观看|