index.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. <!doctype html>
  2. <!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
  3. <!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]-->
  4. <!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]-->
  5. <!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]-->
  6. <!--[if !IE]><!-->
  7. <html lang="en">
  8. <!--<![endif]-->
  9. <head>
  10. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  11. <meta name="viewport" content="width=device-width,initial-scale=1.0">
  12. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  13. <script type="text/javascript" src="../../extras/jquery.min.1.7.js"></script>
  14. <script type="text/javascript" src="../../extras/jquery-ui-1.8.20.custom.min.js"></script>
  15. <script type="text/javascript" src="../../extras/jquery.mousewheel.min.js"></script>
  16. <script type="text/javascript" src="../../extras/modernizr.2.5.3.min.js"></script>
  17. <script type="text/javascript" src="../../lib/hash.js"></script>
  18. <title>翻书</title>
  19. </head>
  20. <body>
  21. <div id="canvas">
  22. <div class="logo"></div>
  23. <div id="book-zoom">
  24. <div class="sample-docs">
  25. <!-- <div ignore="1" class="tabs"><div class="left"> </div> <div class="right"> </div></div> -->
  26. <!-- <div class="hard"></div> -->
  27. <!-- <div class="hard"></div> -->
  28. <!-- <div class="hard p190"></div> -->
  29. <!-- <div class="hard p191"></div> -->
  30. </div>
  31. </div>
  32. <!-- <div class="progress-bar">
  33. <div class="left-des"></div>
  34. <div class="right-des"></div>
  35. <div id="slider-bar" class="turnjs-slider">
  36. <div id="slider"></div>
  37. </div>
  38. </div> -->
  39. </div>
  40. <script type="text/javascript">
  41. function judgeIsMobile() {
  42. return (/phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone|webOS|android/i.test(navigator.userAgent))
  43. }
  44. const isMobile = judgeIsMobile();
  45. let imgBili = 1064/1545
  46. // console.log('isMobile',isMobile)
  47. let leftDes = $('.left-des');
  48. let rightDes = $('.right-des');
  49. leftDes.html('<span class="pcTxt">首页</span>')
  50. rightDes.html('<span class="pcTxt">1/<span class="txt">6<span></span>')
  51. function loadApp() {
  52. var flipbook = $('.sample-docs');
  53. // Check if the CSS was already loaded
  54. if (flipbook.width() == 0 || flipbook.height() == 0) {
  55. setTimeout(loadApp, 10);
  56. return;
  57. }
  58. // Mousewheel
  59. // $('#book-zoom').mousewheel(function(event, delta, deltaX, deltaY) {
  60. // var data = $(this).data(),
  61. // step = 190,
  62. // flipbook = $('.sample-docs'),
  63. // actualPos = $('#slider').slider('value')*step;
  64. // if (typeof(data.scrollX)==='undefined') {
  65. // data.scrollX = actualPos;
  66. // data.scrollPage = flipbook.turn('page');
  67. // }
  68. // data.scrollX = Math.min($( "#slider" ).slider('option', 'max')*step,
  69. // Math.max(0, data.scrollX + deltaX));
  70. // var actualView = Math.round(data.scrollX/step),
  71. // page = Math.min(flipbook.turn('pages'), Math.max(1, actualView*2 - 2));
  72. // if ($.inArray(data.scrollPage, flipbook.turn('view', page))==-1) {
  73. // data.scrollPage = page;
  74. // flipbook.turn('page', page);
  75. // }
  76. // if (data.scrollTimer)
  77. // clearInterval(data.scrollTimer);
  78. // data.scrollTimer = setTimeout(function(){
  79. // data.scrollX = undefined;
  80. // data.scrollPage = undefined;
  81. // data.scrollTimer = undefined;
  82. // }, 1000);
  83. // });
  84. // Slider
  85. // 滑动
  86. $("#slider").slider({
  87. min: 1,
  88. max: 7,
  89. start: function (event, ui) {
  90. if (!window._thumbPreview) {
  91. _thumbPreview = $('<div />', { 'class': 'thumbnail' }).html('<div></div>');
  92. setPreview(ui.value);
  93. // _thumbPreview.appendTo($(ui.handle));
  94. } else
  95. setPreview(ui.value);
  96. //控制进度条按钮
  97. moveBar(false);
  98. },
  99. slide: function (event, ui) {
  100. // console.log('slide',event, ui)
  101. setPreview(ui.value);
  102. },
  103. stop: function () {
  104. console.log('stop')
  105. if (window._thumbPreview)
  106. _thumbPreview.removeClass('show');
  107. let turnPage = Math.max(1, $(this).slider('value') * 2 - 2)
  108. // console.log("turnPage",turnPage)
  109. // if (!isMobile && (turnPage == 190 || turnPage == 191)) {
  110. // turnPage = 188;
  111. // }
  112. // if (isMobile && turnPage == 190) {
  113. // turnPage = 189;
  114. // }
  115. // if (isMobile && turnPage <= 2) {
  116. // turnPage = 3;
  117. // }
  118. // console.log("修改后的turnPage",turnPage)
  119. $('.sample-docs').turn('page', turnPage);
  120. }
  121. });
  122. // URIs
  123. Hash.on('^page\/([0-9]*)$', {
  124. //页面刷新时执行 普通切换不执行
  125. yep: function (path, parts) {
  126. // console.log('path',path)
  127. // console.log('parts',parts)
  128. var page = parts[1];
  129. if (page !== undefined) {
  130. if ($('.sample-docs').turn('is'))
  131. $('.sample-docs').turn('page', page);
  132. }
  133. },
  134. nop: function (path) {
  135. // 这个是html后面不加啥后缀是执行
  136. // console.log('这个是啥时候执行啊啊啊啊啊啊啊 啊 啊啊啊 啊啊啊')
  137. // if(isMobile){
  138. // console.log('这是移动端啊啊啊啊啊啊 啊啊啊啊啊啊啊啊')
  139. // // Hash.go('page/' + 3).update();
  140. // // $('.sample-docs').turn('page', 5);
  141. // }
  142. if ($('.sample-docs').turn('is'))
  143. $('.sample-docs').turn('page', 1);
  144. }
  145. });
  146. // Arrows
  147. // $(document).keydown(function (e) {
  148. // var previous = 37, next = 39;
  149. // switch (e.keyCode) {
  150. // case previous:
  151. // $('.sample-docs').turn('previous');
  152. // break;
  153. // case next:
  154. // $('.sample-docs').turn('next');
  155. // break;
  156. // }
  157. // });
  158. // Create the flipbook
  159. flipbook.turn({
  160. elevation: 50,
  161. acceleration: isMobile ? true : false,
  162. gradients: true,
  163. autoCenter: true,
  164. duration: 1000,
  165. pages: isMobile ? 7 : 9,
  166. display: isMobile ? 'single' : 'double',
  167. when: {
  168. turning: function (e, page, view) {
  169. // 处理
  170. console.log('page', page)
  171. //pc端末页 不给翻页控制
  172. var book = $(this),
  173. currentPage = book.turn('page'),
  174. pages = book.turn('pages');
  175. // 处理当前页码数量 更新dom
  176. if (isMobile) {
  177. currentPage = window.location.href.split('/')[window.location.href.split('/').length - 1]
  178. console.log('currentPage---------------------', currentPage)
  179. }
  180. console.log('view[0]', view[0])
  181. let curPage = view[0] - 2;
  182. if (view[0] == 2 && !isMobile) {
  183. curPage = 1;
  184. }
  185. if (view[0] == 0 && !isMobile) {
  186. curPage = 1;
  187. }
  188. if (view[0] == 2 && isMobile) {
  189. curPage = 1;
  190. }
  191. if (view[0] == 1 && isMobile) {
  192. curPage = 1;
  193. }
  194. if (view[0] > 2 && isMobile) {
  195. curPage = view[0] - 1;
  196. }
  197. let rightDesContent = `<span class="pcTxt">${curPage}/<span class="txt">${pages - (isMobile ? 1 : 3)}</span></span>`,
  198. leftDesContent = "首页";
  199. if (!isMobile) {
  200. if (curPage == 1 && view[0] == 2) {
  201. leftDesContent = "目录";
  202. }
  203. //在 curPage == 1之后单独处理pc首页情况
  204. else if (curPage == 1 && view[0] == 0) {
  205. leftDesContent = "首页";
  206. }
  207. else if (2 <= curPage && curPage <= 48) {
  208. leftDesContent = "第一章 广东乡村状况与经济情形";
  209. }
  210. else {
  211. leftDesContent = "首页"
  212. }
  213. } else {
  214. if (1 == curPage - 1 && view[0] === 3) {
  215. leftDesContent = "首页";
  216. }
  217. // 单独处理
  218. else if (1 <= curPage - 1 && curPage - 1 <= 2 && view[0] === 4) {
  219. leftDesContent = "目录";
  220. }
  221. // 单独处理
  222. else if (1 <= curPage - 1 && curPage - 1 <= 2 && view[0] === 5) {
  223. leftDesContent = "目录";
  224. }
  225. else if (3 <= curPage - 1 && curPage - 1 <= 50) {
  226. leftDesContent = "第一章 广东乡村状况与经济情形";
  227. }
  228. else {
  229. leftDesContent = "首页"
  230. }
  231. }
  232. leftDesContent = `<span class="pcTxt">${leftDesContent}</span>`
  233. rightDes.html(rightDesContent)
  234. leftDes.html(leftDesContent)
  235. if (currentPage > 3 && currentPage < pages - 3) {
  236. if (page == 1) {
  237. book.turn('page', 2).turn('stop').turn('page', page);
  238. e.preventDefault();
  239. return;
  240. } else if (page == pages) {
  241. book.turn('page', pages - 1).turn('stop').turn('page', page);
  242. e.preventDefault();
  243. return;
  244. }
  245. else {
  246. console.log('来到这边')
  247. }
  248. }
  249. else if (page > 3 && page < pages - 3) {
  250. console.log('应该是这边')
  251. if (currentPage == 1) {
  252. book.turn('page', 2).turn('stop').turn('page', page);
  253. e.preventDefault();
  254. return;
  255. } else if (currentPage == pages) {
  256. book.turn('page', pages - 1).turn('stop').turn('page', page);
  257. e.preventDefault();
  258. return;
  259. }
  260. }
  261. console.log('走到history hash了')
  262. Hash.go('page/' + page).update();
  263. // 正好跳页的是时候 将首页的边框隐藏掉
  264. if (!isMobile) {
  265. let targetArr = window.location.href && window.location.href.split('/').length > 0 && window.location.href.split('/') || []
  266. let target = targetArr[targetArr.length - 1]
  267. if (target == 1) {
  268. $('.sample-docs .odd .gradient').css("display", "none");
  269. } else {
  270. $('.sample-docs .odd .gradient').css("display", "block");
  271. }
  272. }
  273. //切换条
  274. if (page == 1 || page == pages)
  275. $('.sample-docs .tabs').hide();
  276. },
  277. turned: function (e, page, view) {
  278. // 正好跳页的是时候 将首页的边框隐藏掉
  279. if (!isMobile) {
  280. let targetArr = window.location.href && window.location.href.split('/').length > 0 && window.location.href.split('/') || []
  281. let target = targetArr[targetArr.length - 1]
  282. if (target == 1) {
  283. $('.sample-docs .odd .gradient').css("display", "none");
  284. } else {
  285. $('.sample-docs .odd .gradient').css("display", "block");
  286. }
  287. }
  288. var book = $(this);
  289. $('#slider').slider('value', getViewNumber(book, page));
  290. if (isMobile && view[0] > 3) {
  291. console.log('我是移动端哈哈哈哈')
  292. }
  293. // $('.sample-docs').turn('page', page);
  294. //切换条
  295. if (page != 1 && page != book.turn('pages'))
  296. $('.sample-docs .tabs').fadeIn(500);
  297. else
  298. $('.sample-docs .tabs').hide();
  299. book.turn('center');
  300. updateTabs();
  301. },
  302. start: function (e, pageObj) {
  303. console.log('刷新的那一刻start')
  304. //控制进度条按钮
  305. moveBar(true);
  306. },
  307. end: function (e, pageObj) {
  308. // console.log('刷新的那一刻end')
  309. var book = $(this);
  310. setTimeout(function () {
  311. $('#slider').slider('value', getViewNumber(book));
  312. }, 1);
  313. //控制进度条按钮
  314. moveBar(false);
  315. },
  316. missing: function (e, pages) {
  317. // console.log('刷新的那一刻missing')
  318. // console.log('e',e)
  319. // console.log('pages',pages)
  320. // if(isMobile){
  321. // let href = window.location.href;
  322. // let hrefArr = href.split('/');
  323. // let targetArr = [Number(hrefArr[hrefArr.length-1]),Number(hrefArr[hrefArr.length-1])+1,Number(hrefArr[hrefArr.length-1])+2]
  324. // console.log('targetArr',targetArr)
  325. // pages = [...pages,...targetArr]
  326. // console.log('pages',pages)
  327. // }
  328. for (var i = 0; i < pages.length; i++) {
  329. addPage(pages[i], $(this));
  330. }
  331. }
  332. }
  333. }).turn('page');
  334. $('#slider').slider('option', 'max', numberOfViews(flipbook));
  335. flipbook.addClass('animated');
  336. // Show canvas
  337. $('#canvas').css({ visibility: 'visible' });
  338. }
  339. // Hide canvas
  340. $('#canvas').css({ visibility: 'hidden' });
  341. yepnope({
  342. test: Modernizr.csstransforms,
  343. yep: ['../../lib/turn.min.js', 'css/jquery.ui.css'],
  344. nope: ['../../lib/turn.html4.min.js', 'css/jquery.ui.html4.css'],
  345. both: ['css/docs.css', 'js/docs.js'],
  346. complete: loadApp
  347. });
  348. </script>
  349. </body>
  350. </html>