index.html 13 KB

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