turn.js異步加載實(shí)現(xiàn)翻書效果
本文實(shí)例為大家分享了turn.js異步加載實(shí)現(xiàn)翻書效果的具體代碼,供大家參考,具體內(nèi)容如下
1、閱讀翻書js
/** * 電子翻書 */ //var width = 1080; //var height = 1680; var width = "10rem"; var height = "15.2rem"; window.onload = function () { //預(yù)加載 //loading(18,1); initData(); } function getQueryString(name) { var result = window.location.search.match(new RegExp("[\?\&]" + name + "=([^\&]+)", "i")); if (result == null || result.length < 1) { return ""; } return result[1]; } function initData(){ var book = getQueryString("bookId"); var count = getQueryString("pageCount"); loading_img_url = new Array(); for (var i = 0; i < count; i++) { loading_img_url.push((i+1) + ".png"); } var page = getQueryString("pageNum"); if(!page){ page =1; } loading(book,count,page); } var date_start; var date_end; date_start = getNowFormatDate(); //加載圖片 var loading_img_url = []; //加載頁面 function loading(book,count,page) { var numbers = 0; var length = loading_img_url.length; //var resUrl = ctxStatic+"/modules/intelligentquery/img/3/"; var resUrl = website + "/lawcase/bookScreenshot?bookId=" + book + "&page="; var jsUrl = ctxStatic+"/modules/front/guide/vertical/"; var bookId = book; var img = new Image(); img.src = resUrl + page; //img.src = resUrl + pageNum + ".png"; 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)) { //$('.number').hide(); date_end = getNowFormatDate(); var loading_time = date_end - date_start; //預(yù)加載圖片 $(function progressbar() { //拼接圖片 $('.shade').hide(); var tagHtml = ""; var imgUrl = resUrl + page; //var imgUrl = resUrl + (pageNum) + ".png"; if (pageNum == 1) { tagHtml += "<div id='first'><img src='"+imgUrl+"' /></div>"; } else if (pageNum == length) { tagHtml += "<div id='first'><img src='"+imgUrl+"' /></div>"; } else { tagHtml += "<div><img src='"+imgUrl+"' /></div>"; } $(".flipbook").append(tagHtml); var w = $(".graph").width(); $(".flipbook-viewport").show(); }); //配置turn.js function loadApp() { var w = width; var h = height; $('.flipboox').width(w).height(h); $('.flipbook').turn({ width: w, height: h, elevation: 50, pages: count, display: 'single', gradients: true, autoCenter: true, when: { turning: function (e, page, view) { var total = $(".flipbook").turn("pages");//總頁數(shù) $("#currentPage").html(page); $("#pageCount").html("/"+total); if (page == 1) { $(".btnImg").css("display", "none"); $(".mark").css("display", "block"); } else { $(".btnImg").css("display", "block"); $(".mark").css("display", "none"); } if (page == length) { $(".nextPage").css("display", "none"); } else { $(".nextPage").css("display", "block"); } }, turned: function (e, page, view) { var total = $(".flipbook").turn("pages");//總頁數(shù) $("#currentPage").html(page); $("#pageCount").html("/"+total); // 判斷翻頁按鈕點(diǎn)擊事件以及狀態(tài)樣式 if(page >= total){ $("#next").addClass("btn-invalid").removeAttr('onclick'); }else{ $("#next").removeClass("btn-invalid").attr("onclick","next();"); } if(page == 1){ $("#prev").addClass("btn-invalid").removeAttr('onclick'); $("#indexPage").css("display","none"); }else{ $("#prev").removeClass("btn-invalid").attr("onclick","prev();"); $("#indexPage").css("display","flex"); } }, missing: function (e, pages) { for (var i = 0; i < pages.length; i++) { addPage(pages[i], $(this),bookId); } } } }) var cpage = getQueryString("pageNum"); $(".flipbook").turn('page', cpage); } yepnope({ test: Modernizr.csstransforms, yep: [jsUrl+'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; } //異步加載 function addPage(page, book,bookId) { //var resUrl = ctxStatic+"/modules/intelligentquery/img/3/"; var resUrl = website + "/lawcase/bookScreenshot?bookId=" + bookId + "&page="; var imgUrl = resUrl + (page); var tagHtml = ""; if (page == 1) { tagHtml += "<div id='first'><img src='"+imgUrl+"' /></div>"; } else if (page == length) { tagHtml += "<div id='end'><img src='"+imgUrl+"' /></div>"; } else { tagHtml += "<div><img src='"+imgUrl+"' /></div>"; } // Check if the page is not in the book if (!book.turn('hasPage', page)) { // Create an element for this page var element = $('<div />').html(''); // Add the page book.turn('addPage', element, page); element.html(tagHtml); } }
2、閱讀頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="front" value="${frontPath}${pageContext.request.contextPath}/f"/> <c:set var="ctxStatic" value="${pageContext.request.contextPath}/static"/> <c:set var="website" value="${pageContext.request.contextPath}"/> <!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, maximum-scale=1, minimum-scale=1, 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>閱讀</title> <script src="${ctxStatic}/plugins/jquery-3.2.1.min.js"></script> <script src="${ctxStatic}/plugins/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script> <script src="${ctxStatic}/modules/front/guide/vertical/common/js/common.js"></script> <script type="text/javascript" src="${ctxStatic}/modules/front/guide/vertical/js/modernizr.2.5.3.min.js"></script> <script type="text/javascript" src="${ctxStatic}/modules/front/guide/vertical/js/main.js"></script> <script src="${ctxStatic}/modules/front/guide/vertical/common/js/flexible.js"></script> <link href="${ctxStatic}/modules/front/guide/vertical/css/app-base.css" rel="external nofollow" rel="stylesheet"> <style type="text/css"> .flipbook img{ width:10rem; height:15.2rem; } .book-wrapper{ background-image: url(''); } </style> </head> <body> <div class="flex-container"> <header class="banner2"> <h1>閱讀</h1> </header> <div class="page-content judicial-wrapper book-wrapper"> <!-- 書本區(qū)域 --> <div class="flipbook-viewport book-box boox-details" style="display:none;"> <div class="previousPage"></div> <div class="nextPage"></div> <div class="return"></div> <div class="container"> <div class="flipbook"> </div> </div> </div> </div> <!-- 懸浮菜單 --> <nav class="menu-right"> <div class="paging-box"> <ul> <li> <a href="javascript:;" id="goBack" class="i-orange"> <i class="icon-undo2"></i></a> </li> <li> <a href="javascript:;" id="prev" class="prev-page" οnclick="prev()"> <i class="icon-arrow-up2"></i></a> </li> <li class="paging-item"> <p id="pageNum"><span id="currentPage">0</span><span id="pageCount">/0</span></p> </li> <li> <a href="javascript:;" id="next" class="next-page" οnclick="next()"> <i class="icon-arrow-down2"></i></a> </li> <li> <div class="skip-page"> <span>跳至</span> <input id="skip-page-num" type="text" name="skip-toPage"> <div id="softkey"></div> <span>頁</span> </div> </li> <li> <a href="${front}/guide/vertical/index" class="color-home"> <i class="icon-homepage_fill"></i></a> </li> </ul> </div> </nav> </div> </body> </html> <script> var ctxStatic = "${ctxStatic}"; var website = "${website}"; //上一頁 function prev(){ var currentPage = $(".flipbook").turn("page"); $(".flipbook").turn('page', currentPage - 1); } // 下一頁 function next() { var currentPage = $(".flipbook").turn("page"); $(".flipbook").turn('page', currentPage + 1); } var temp_couter = 0; // 模擬數(shù)字鍵盤 var softkey = document.getElementById("softkey"); var input1 = document.getElementById("skip-page-num"); $('#skip-page-num').focus(function(){ new KeyBoard(input1,softkey); }); //跳頁 function _global_keyboard_close_btn_callback(value){ var pageNum = parseInt(value); var total = parseInt(getQueryString("pageCount")); if(pageNum <= 1){ pageNum = 1; }else if(pageNum >= total){ pageNum = total; } $("#skip-page-num").val(pageNum); $(".flipbook").turn('page', pageNum); } </script> <script src="${ctxStatic}/modules/front/guide/vertical/common/virtualkeyboard/keyboard.js"></script>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript圖片url地址轉(zhuǎn)base64簡單示例
這篇文章主要給大家介紹了關(guān)于JavaScript圖片url地址轉(zhuǎn)base64的相關(guān)資料,圖片URL轉(zhuǎn)Base64是把圖片URL轉(zhuǎn)化為一個以base64編碼的字符串格式,使得圖片可以直接在HTML或CSS中使用,需要的朋友可以參考下2023-10-10淺析JavaScript的幾種Math函數(shù),random(),ceil(),round(),floor()
本文主要對JavaScript的幾種Math函數(shù),random(),ceil(),round(),floor()的作用進(jìn)行簡要解析,具有很好的參考價值,需要的朋友一起來看下吧2016-12-12JavaScript錯誤處理之分析 Uncaught(in promise) error的
在開發(fā)過程中,JavaScript的錯誤處理是一個老生常談的話題,當(dāng)應(yīng)用程序發(fā)生未捕獲的異常時,Uncaught(in promise) error是其中最常見的錯誤類型,這篇文章將從多個方面詳細(xì)闡述這種錯誤類型的原因與解決方案,感興趣的朋友一起看看吧2023-12-12JSON數(shù)據(jù)中存在單個轉(zhuǎn)義字符“\”的處理方法
這篇文章主要介紹了JSON數(shù)據(jù)中存在單個轉(zhuǎn)義字符“\”的處理方法,在這里反斜杠(又稱右斜杠"\"),還表示轉(zhuǎn)義字符,字符串中不能成單出現(xiàn)。具體內(nèi)容詳情大家跟隨腳本之家小編一起看看吧2018-07-07Js實(shí)現(xiàn)中國公民身份證號碼有效性驗(yàn)證實(shí)例代碼
這篇文章主要介紹了Js實(shí)現(xiàn)中國公民身份證號碼有效性驗(yàn)證實(shí)例代碼,可以識別身份證號碼的正確性,有興趣的可以了解一下2017-05-05javascript 漢字轉(zhuǎn)拼音實(shí)現(xiàn)代碼
主要是提前定義了很多文字,這樣的方法不是很是,如果庫中沒有這個詞,是看不到相關(guān)信息的。2009-12-12