index.html 13 KB

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