赞
踩
turn.js 实现翻书效果,自适应pc端、手机端、ipad,可以左右滑动翻页
<!doctype html> <!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]--> <!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]--> <!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]--> <!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> <head> <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"/> <title>宣传手册</title> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <!--jquerymobile 自带的loading隐藏--> <style> .ui-loader-default{ display:none} .ui-mobile-viewport{ border:none;} .ui-page {padding: 0; margin: 0; outline: 0} * { touch-action: pan-y; }; </style> <script src="https://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://apps.bdimg.com/libs/jquerymobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <!-- <script type="text/javascript" src="./js/jquery.min.1.7.js"></script> --> <script type="text/javascript" src="./js/modernizr.2.5.3.min.js"></script> </head> <body > <div id="canvas"> <div class="magazine-viewport"> <div class="container" > <div class="magazine"> <div ignore="1" class="next-button next-button-hover"></div> <div style="background:url(images/0001.jpg) top center no-repeat;background-size:100%;background-color:#293984;"></div> <div style="background:url(images/0002.jpg) top center no-repeat;background-size:100%;background-color:#293984;"></div> ......... <div ignore="1" class="previous-button"></div> </div> <!--移动端上下翻页和刷新返回首页--> <div class="mobile_bottom"> <div class="m_bottm_box"> <div class="m_bottom_img pre"><img src="./images/ld.png" alt="" srcset=""></div> <div class="m_bottom_img refresh" style="display: none;"><img src="./images/refresh.png" alt="" srcset=""></div> <div class="m_bottom_img next"><img src="./images/rd.png" alt="" srcset=""></div> </div> </div> </div> </div> </div> <!-- <script src="https://cdn.bootcss.com/vConsole/3.3.4/vconsole.min.js"></script> <script> // 初始化 var vConsole = new VConsole(); console.log('Hello world'); </script> --> <script type="text/javascript"> var w = $(window).width(); var h = $(window).height(); // console.log(w,h) var isMobile = /Mobi|Android|iPhone/i.test(navigator.userAgent)?true:false; var isPad = /iPad/i.test(navigator.userAgent); window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", isPortrait, false); function isPortrait() { console.log(window.orientation) if (window.orientation === 180 || window.orientation === 0) { console.log('竖屏'); return true; } if (window.orientation === 90 || window.orientation === -90 ){ console.log('横屏'); if(isPad){ $(".mobile_bottom").css("display", "none"); } return false; } } function loadApp() { // Create the flipbook console.log(isMobile,"isMobile") $('#canvas').fadeIn(1000); var flipbook = $('.magazine'); if (flipbook.width()==0 || flipbook.height()==0) { setTimeout(loadApp, 10); return; } if(isMobile){ $(".mobile_bottom").css("display", "flex"); }else{ $(".mobile_bottom").css("display", "none"); } flipbook.turn({ width:isMobile && !isPad?w: 922, // Magazine height height:isMobile && !isPad?h: 680, display:isMobile && !isPad?"single":"double", acceleration:isMobile?true:false, // Elevation elevation: 500, duration: 1000, // Enable gradients gradients: true, // Auto center this flipbook autoCenter: true, pages: 18, turnCorners: "bl,br,tl,tr,l.r", when: { turning: function (e, page, view) { if (page == 1) { $('.next-button').css("display", "none"); $('.previous-button').removeClass('previous-button-hover'); $(".refresh").css("display", "none"); } else { $(".refresh").css("display", "block"); } if (page == 18) { $('.next-button').css("display", "none"); $(".nextPage").css("display", "none"); } else { $(".nextPage").css("display", "block"); } }, turned: function (e, page, view) { console.log(page); if(!isMobile || isPad){ $(this).turn('peel','br'); } var total = $(".magazine").turn("pages");//总页数 if (page == 1) { $('.next-button').css("display", "none"); $('.previous-button').removeClass('previous-button-hover'); } else { $(".refresh").css("display", "block"); $('.previous-button').addClass('previous-button-hover'); } if (page == 18) { $('.next-button').css("display", "none"); $('.previous-button').addClass('previous-button-hover'); // setTimeout(function(){ // $('.magazine').turn('page', 1); // },1000) } else { $(".next-button").css("display", "block"); } } } }); $(window).resize(function() { w = $(window).width(); h = $(window).height(); window.location.reload(); resizeViewport(); }).bind('orientationchange', function() { resizeViewport(); }); // Events for the next button $('.next-button').click(function() { $('.magazine').turn('next'); }); // Events for the next button $('.previous-button').click(function() { $('.magazine').turn('previous'); }); resizeViewport(); $('.magazine').addClass('animated'); } $('#canvas').hide(); // Load the HTML4 version if there's not CSS transform yepnope({ test : Modernizr.csstransforms, yep: ['./js/turn.js'], nope: ['./js/turn.html4.min.js',], both: ['./js/zoom.min.js','./js/demo2.js', './css/demo2.css'], complete: loadApp }); </script> <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 = $('<span></span>').html(o.cancelText).appendTo(dom_btn); var btn_ok = $('<span></span>').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); //上一页 $(".pre").bind("touchend", function () { var pageCount = $(".magazine").turn("pages");//总页数 var currentPage = $(".magazine").turn("page");//当前页 if (currentPage >= 2) { $(".magazine").turn('page', currentPage - 1); } }); // 下一页 $(".next").bind("touchend", function () { var pageCount = $(".magazine").turn("pages");//总页数 var currentPage = $(".magazine").turn("page");//当前页 if (currentPage < pageCount) { $(".magazine").turn('page', currentPage + 1); } }); //返回到目录页 $(".refresh").bind("touchend", function () { $(document).confirm('您确定要返回首页吗?', {}, function () { $(".magazine").turn('page', 1); //跳转页数 }, function () { }); }); // 移动端增加左右滑动翻页,turn.js本身不可左右滑动翻页,点击四个角是可以的 $(window).on( "swipeleft", function( event ) { $('.magazine').turn('next'); } ); $(window).on( "swiperight", function( event ) { $('.magazine').turn('previous') } ); </script> </body> </html>
js
// demo2.js function resizeViewport() { var width = $(window).width(), height = $(window).height(), options = $('.magazine').turn('options'); $('.magazine').removeClass('animated'); $('.magazine-viewport').css({ width: width, height: height }) if ($('.magazine').turn('zoom')==1) { var bound = calculateBound({ width: options.width, height: options.height, boundWidth: Math.min(options.width, width), boundHeight: Math.min(options.height, height) }); if (bound.width%2!==0) bound.width-=1; if (bound.width!=$('.magazine').width() || bound.height!=$('.magazine').height()) { $('.magazine').turn('size', bound.width, bound.height); if ($('.magazine').turn('page')==1) $('.magazine').turn('peel', 'br'); $('.next-button').css({height: bound.height, backgroundPosition: '-38px '+(bound.height/2-32/2)+'px'}); $('.previous-button').css({height: bound.height, backgroundPosition: '-4px '+(bound.height/2-32/2)+'px'}); } $('.magazine').css({top: -bound.height/2, left: -bound.width/2}); } $('.magazine').addClass('animated'); } function calculateBound(d) { var bound = {width: d.width, height: d.height}; if (bound.width>d.boundWidth || bound.height>d.boundHeight) { var rel = bound.width/bound.height; if (d.boundWidth/rel>d.boundHeight && d.boundHeight*rel<=d.boundWidth) { bound.width = Math.round(d.boundHeight*rel); bound.height = d.boundHeight; } else { bound.width = d.boundWidth; bound.height = Math.round(d.boundWidth/rel); } } return bound; }
css
//demo2.css body{ overflow:hidden; background-color:#fcfcfc; margin:0; padding:0; } .magazine-viewport .container{ position:absolute; top:50%; left:50%; width:922px; height:600px; margin:auto; } .magazine-viewport .magazine{ width:922px; height:600px; left:-461px; top:-300px; } .magazine-viewport .page{ width:461px; height:600px; background-color:white; background-repeat:no-repeat; background-size:100% 100%; /* background-color:#293a8476; */ background-color: transparent; } .magazine-viewport .zoomer .region{ display:none; } .magazine .page{ -webkit-box-shadow:0 0 20px rgba(0,0,0,0.2); -moz-box-shadow:0 0 20px rgba(0,0,0,0.2); -ms-box-shadow:0 0 20px rgba(0,0,0,0.2); -o-box-shadow:0 0 20px rgba(0,0,0,0.2); box-shadow:0 0 20px rgba(0,0,0,0.2); } .magazine-viewport .page img{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; margin:0; } .mobile_bottom{ height:50px; width:100%; background:transparent; position:fixed; bottom:15px; left:0; right: 0; display: flex; justify-content: center; align-items: center; z-index:222 } .m_bottm_box{ width: 922px;height:100%; display: flex; justify-content: space-around; align-items: center; } .m_bottom_img{ height: 35px; width: 35px; z-index:222 } .m_bottom_img img{ max-width:100% } /*弹出窗口*/ .g-plugin-confirm { position: fixed; z-index: 9999999999999; left: 0; top: 0; right: 0; bottom: 0; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: flex; /*background: rgba(0, 0, 0, 0.1);*/ background-color: rgba(0 ,0, 0, 0.35); justify-content: center; align-items: center; } /* line 397, global.sass */ .g-plugin-confirm > div { background: rgba(255, 255, 255, 0.9); width: 80%; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; -o-border-radius: 10px; border-radius: 10px; } /* line 402, global.sass */ .g-plugin-confirm > div > div:nth-child(1) { text-align: center; color: black; padding: 22px; } /* line 406, global.sass */ .g-plugin-confirm > div > div:nth-child(2) { display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: flex; border-top: 1px solid #cbcbd1; } /* line 409, global.sass */ /* line 409, global.sass */ .g-plugin-confirm > div > div:nth-child(2) span { -moz-box-flex: 1; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; border-right: 1px solid #cbcbd1; text-align: center; padding: 8px 0; color: #3b64c0; font-size: 20px; } .g-plugin-confirm > div > div:nth-child(2) span:first-child{ color: #8d8383; border-bottom-left-radius:10px; } /* line 416, global.sass */ .g-plugin-confirm > div > div:nth-child(2) span:last-child { border-right: 0; border-bottom-right-radius:10px; } .magazine-viewport .shadow{ -webkit-transition: -webkit-box-shadow 0.5s; -moz-transition: -moz-box-shadow 0.5s; -o-transition: -webkit-box-shadow 0.5s; -ms-transition: -ms-box-shadow 0.5s; -webkit-box-shadow:0 0 20px #ccc; -moz-box-shadow:0 0 20px #ccc; -o-box-shadow:0 0 20px #ccc; -ms-box-shadow:0 0 20px #ccc; box-shadow:0 0 20px #ccc; } .magazine-viewport .next-button, .magazine-viewport .previous-button{ width:22px; height:100%; position:absolute; top:0; } .magazine-viewport .next-button{ right:-22px; -webkit-border-radius:0 15px 15px 0; -moz-border-radius:0 15px 15px 0; -ms-border-radius:0 15px 15px 0; -o-border-radius:0 15px 15px 0; border-radius:0 15px 15px 0; } .magazine-viewport .previous-button{ left:-22px; -webkit-border-radius:15px 0 0 15px; -moz-border-radius:15px 0 0 15px; -ms-border-radius:15px 0 0 15px; -o-border-radius:15px 0 0 15px; border-radius:15px 0 0 15px; } .magazine-viewport .previous-button-hover, .magazine-viewport .next-button-hover{ background-color:rgba(0,0,0, 0.2); } .magazine-viewport .previous-button-hover, .magazine-viewport .previous-button-down{ background-image:url(../images/arrows.png); background-position:-4px 50%; background-repeat:no-repeat; } .magazine-viewport .previous-button-down, .magazine-viewport .next-button-down{ background-color:rgba(0,0,0, 0.4); } .magazine-viewport .next-button-hover, .magazine-viewport .next-button-down{ background-image:url(../images/arrows.png); background-position:-38px 50%; background-repeat:no-repeat; } .magazine-viewport .zoom-in .next-button, .magazine-viewport .zoom-in .previous-button{ display:none; } .animated{ -webkit-transition:margin-left 0.5s; -moz-transition:margin-left 0.5s; -ms-transition:margin-left 0.5s; -o-transition:margin-left 0.5s; transition:margin-left 0.5s; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。