最近CTO给我分配了一个移动端H5开发的任务,主要功能是需要实现翻书效果,我听过主要需求后,当时是呀!!!接下来自己尝试使用 fullPage.js和Swiper来实现翻书效果,结果效果都不是非常的理想,后来想起自己曾经做过PC版的翻书效果,当时使用的是Turn.js ,查过其相关API后,整个人突然豁然开朗呀,使用Turn.js 完全可以解决当前我接手这个项目的所有需求呀。现在将个人的学习总结如下,若有不正确的地方,欢迎读者给与批评指正!
Turn.js的官方网址: http://www.turnjs.com/
下面是我这个项目上线后的效果:
看过实际项目后,各位看官是不是已经迫不及待的想知道这个项目是如何实现,看官莫急,接下来我就详细的介绍下我的开发过程:
1、需要引入的脚本文件
1 <link rel="stylesheet" type="text/css" href="css/basic.css"/> 2 <script type="text/javascript" src="js/jquery.js"></script> 3 <script type="text/javascript" src="js/modernizr.2.5.3.min.js"></script> 4 <script type="text/javascript" src="js/main.js"></script>
2、html部分代码
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/> 7 <meta name="format-detection" content="telephone=no"> 8 <meta name="apple-mobile-web-app-capable" content="yes"/> 9 <meta name="apple-mobile-web-app-status-bar-style" content="black"/> 10 <title>Turn.js 实现翻书效果</title> 11 <link rel="stylesheet" type="text/css" href="css/basic.css"/> 12 <script type="text/javascript" src="js/jquery.js"></script> 13 <script type="text/javascript" src="js/modernizr.2.5.3.min.js"></script> 14 <script type="text/javascript" src="js/main.js"></script> 15 </head> 16 <body> 17 <div class="shade"> 18 <div class="sk-fading-circle"> 19 <div class="sk-circle1 sk-circle"></div> 20 <div class="sk-circle2 sk-circle"></div> 21 <div class="sk-circle3 sk-circle"></div> 22 <div class="sk-circle4 sk-circle"></div> 23 <div class="sk-circle5 sk-circle"></div> 24 <div class="sk-circle6 sk-circle"></div> 25 <div class="sk-circle7 sk-circle"></div> 26 <div class="sk-circle8 sk-circle"></div> 27 <div class="sk-circle9 sk-circle"></div> 28 <div class="sk-circle10 sk-circle"></div> 29 <div class="sk-circle11 sk-circle"></div> 30 <div class="sk-circle12 sk-circle"></div> 31 </div> 32 <div class="number"></div> 33 </div> 34 <div class="flipbook-viewport" style="display:none;"> 35 <div class="previousPage"></div> 36 <div class="nextPage"></div> 37 <div class="return"></div> 38 <img class="btnImg" src="./image/btn.gif" style="display: none"/> 39 <div class="container"> 40 <div class="flipbook"> 41 </div> 42 </div> 43 </div> 44 <script> 45 //自定义仿iphone弹出层 46 (function ($) { 47 //ios confirm box 48 jQuery.fn.confirm = function (title, option, okCall, cancelCall) { 49 var defaults = { 50 title: null, //what text 51 cancelText: '取消', //the cancel btn text 52 okText: '确定' //the ok btn text 53 }; 54 55 if (undefined === option) { 56 option = {}; 57 } 58 if ('function' != typeof okCall) { 59 okCall = $.noop; 60 } 61 if ('function' != typeof cancelCall) { 62 cancelCall = $.noop; 63 } 64 65 var o = $.extend(defaults, option, {title: title, okCall: okCall, cancelCall: cancelCall}); 66 67 var $dom = $(this); 68 69 var dom = $('<div class="g-plugin-confirm">'); 70 var dom1 = $('<div>').appendTo(dom); 71 var dom_content = $('<div>').html(o.title).appendTo(dom1); 72 var dom_btn = $('<div>').appendTo(dom1); 73 var btn_cancel = $('<a href="#"></a>').html(o.cancelText).appendTo(dom_btn); 74 var btn_ok = $('<a href="#"></a>').html(o.okText).appendTo(dom_btn); 75 btn_cancel.on('click', function (e) { 76 o.cancelCall(); 77 dom.remove(); 78 e.preventDefault(); 79 }); 80 btn_ok.on('click', function (e) { 81 o.okCall(); 82 dom.remove(); 83 e.preventDefault(); 84 }); 85 86 dom.appendTo($('body')); 87 return $dom; 88 }; 89 })(jQuery); 90 91 //上一页 92 $(".previousPage").bind("touchend", function () { 93 var pageCount = $(".flipbook").turn("pages");//总页数 94 var currentPage = $(".flipbook").turn("page");//当前页 95 if (currentPage >= 2) { 96 $(".flipbook").turn('page', currentPage - 1); 97 } else { 98 } 99 }); 100 // 下一页 101 $(".nextPage").bind("touchend", function () { 102 var pageCount = $(".flipbook").turn("pages");//总页数 103 var currentPage = $(".flipbook").turn("page");//当前页 104 if (currentPage <= pageCount) { 105 $(".flipbook").turn('page', currentPage + 1); 106 } else { 107 } 108 }); 109 //返回到目录页 110 $(".return").bind("touchend", function () { 111 $(document).confirm('您确定要返回首页吗?', {}, function () { 112 $(".flipbook").turn('page', 1); //跳转页数 113 }, function () { 114 }); 115 }); 116 </script> 117 </body> 118 </html>