bookdetail.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width,initial-scale=1.0" />
  6. <link rel="shortcut icon" href="favicon.ico" />
  7. <link rel="bookmark" href="favicon.ico" type="image/x-icon"  />
  8. <title>2023年中国航油-管理年鉴</title>
  9. <link rel="stylesheet" href="css/reset.css" />
  10. <link rel="stylesheet" href="css/main.css" />
  11. <style>
  12. .m-artical-action-mid{
  13. position: fixed;
  14. width: 100%;
  15. height: 40%;
  16. top: 30%;
  17. z-index: 9998;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <!--中间点击层-->
  23. <div class="m-artical-action">
  24. <div class="m-artical-action-mid" id="action_mid"></div>
  25. </div>
  26. <!--顶部导航-->
  27. <div class="nav-top" id="nav_top" style="display: none;">
  28. <div class="nav_container">
  29. <div class="nav_return"></div>
  30. <div class="nav_text" id="nav_text">返回书架</div>
  31. </div>
  32. </div>
  33. <!--主体内容-->
  34. <div class="container">
  35. <div class="Content">
  36. </div>
  37. <div class="page_btn">
  38. <button class="btn-prev" id="btn_prev">上一页</button>
  39. <button class="btn-next" id="btn_next">下一页</button>
  40. </div>
  41. </div>
  42. <!--底部导航栏 -->
  43. <div class="nav-bottom" id="nav_bottom" style="display: none;">
  44. <div class="btn-mulu">
  45. <div class="mulu">
  46. <div class="icon_mulu"> </div>
  47. <div class="text_mulu">目录</div>
  48. </div>
  49. </div>
  50. <div class="btn_Aa">
  51. <div class="Aa">
  52. <div class="icon-Aa" id="icon_Aa"> </div>
  53. <div class="text_Aa">字体</div>
  54. </div>
  55. </div>
  56. <div class="btn-yejian">
  57. <div class="yejian">
  58. <div class="icon-yejian" id="icon_yejian"> </div>
  59. <div class="text_yejian">夜间</div>
  60. </div>
  61. </div>
  62. <!--字体功能栏-->
  63. <div class="fontPop" id="font_Pop" style="display: none;">
  64. <div class="fontSize">
  65. <span>字号</span>
  66. <button class="btnBig" id="btn_Big">大</button>
  67. <button class="btnSmall" id="btn_Small">小</button>
  68. </div>
  69. <div class="fontBk">
  70. <span>背景</span>
  71. <div class="bkColor">
  72. <div class="bk-container" style="background-color: #f7eee5;">
  73. <div id="mb"><span > 米白 </span></div>
  74. </div>
  75. <div class="bk-container" style="background-color: #e9dfc7;">
  76. <div id="zz"><span > 纸张 </span></div>
  77. </div>
  78. <div class="bk-container" style="background-color: #a4a4a4;">
  79. <div id="qh"><span > 浅灰 </span></div>
  80. </div>
  81. <div class="bk-container" style="background-color: #cdefce;">
  82. <div id="hy"><span > 护眼 </span></div>
  83. </div>
  84. <div class="bk-container" style="background-color: #283548;">
  85. <div id="hl"><span > 海蓝 </span></div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <script type="text/javascript" src="js/jquery.min.js" ></script>
  92. <script type="text/javascript" src="js/jquery.jsonp.js" ></script>
  93. <script type="text/javascript" src="js/jquery.base64.js" ></script>
  94. <script>
  95. var Dom={
  96. font_Pop: $("#font_Pop"),
  97. nav_top:$("#nav_top"),
  98. nav_bottom:$("#nav_bottom"),
  99. icon_Aa:$("#icon_Aa"),
  100. body:$("body"),
  101. win:$(window),
  102. icon_yejian:$("#icon_yejian"),
  103. btn_Big:$("#btn_Big"),
  104. btn_Small:$("#btn_Small")
  105. }
  106. //数据层的初始化
  107. var RootContainer = $('.Content');
  108. var readerUIFrame = ReaderBaseFrame(RootContainer);
  109. var readerm=ReaderModel();
  110. readerm.init(function(data){
  111. readerUIFrame(data);
  112. });
  113. //业务事件的初始化
  114. EventHandler();
  115. var Util=(function(){//封装的本地存储和json数据解析
  116. var prefix = 'function_reader_';
  117. var StorageGetter = function(key){
  118. return localStorage.getItem(prefix + key);
  119. }
  120. var StorageSetter = function(key,val){
  121. return localStorage.setItem(prefix+key,val);
  122. }
  123. //通过url来获取加密信息,并解密
  124. var getJsonp=function(url,callback){
  125. return $.jsonp({
  126. url:url,
  127. cache:true,
  128. callback:'duokan_fiction_chapter',
  129. success:function(result){
  130. //获取加密信息,解码、转json
  131. var data=$.base64.decode(result);
  132. var json=decodeURIComponent(escape(data));
  133. callback(json);
  134. }
  135. })
  136. }
  137. return{
  138. getJsonp:getJsonp,
  139. StorageGetter:StorageGetter,
  140. StorageSetter:StorageSetter
  141. }
  142. })();
  143. //背景颜色 存储记录
  144. var bkgroundcolor=Util.StorageGetter("bkgroundcolor");
  145. var bkCurrColor=Util.StorageGetter("bkgroundcolor");
  146. Dom.body.css('background-color',bkgroundcolor);
  147. //字号大小 设置存储记录
  148. var InitFontSize;
  149. InitFontSize=Util.StorageGetter("font_size");
  150. InitFontSize= parseInt(InitFontSize);
  151. if (!InitFontSize) {
  152. InitFontSize = 18;
  153. }
  154. $("p").css('font-size',InitFontSize);
  155. function ReaderBaseFrame(container){//UI渲染层
  156. function ParseChapterData(jsonData){//生成要展示的 html文本
  157. var jsonObj=jsonData;
  158. var html="<h4>" + jsonObj.t + "</h4>";
  159. for (var i=0; i<jsonObj.p.length; i++) {
  160. html+="<p>"+jsonObj.p[i]+"</p>";
  161. }
  162. html = html.replace("##",)
  163. return html;
  164. }
  165. return function (data){//返回 渲染后的结果data:解密后的json数据
  166. container.html(ParseChapterData(data));
  167. }
  168. }
  169. function ReaderModel(){//数据交互层
  170. //todo 获取章节信息
  171. var Chapter_id;
  172. var ChapterTotal;
  173. var init=function(Uicallback){//初始化 信息
  174. getFictionInfo(function(){
  175. getCurChaptInfo(Chapter_id,function(data){
  176. //todo
  177. Uicallback&&Uicallback(data);
  178. })
  179. })
  180. };
  181. var getFictionInfo=function(callback){//获取所有章节摘要信息
  182. $.get('data/chapter.json',function(data){
  183. //todo 获取章节信息之后的回调
  184. Chapter_id = parseInt(Util.StorageGetter("ChapterId"));
  185. if (Chapter_id == null|| !Chapter_id) {
  186. Chapter_id=data.chapters[1].chapter_id;
  187. }
  188. //Chapter_id=data.chapters[1].chapter_id;
  189. ChapterTotal=data.chapters.length;
  190. callback&&callback();
  191. },'json');
  192. };
  193. var getCurChaptInfo=function(Chapter_id,callback){//获取当前Chapter_id章节详细信息
  194. $.get('data/data'+Chapter_id+'.json',function(data){
  195. //todo 获取详细信息之后的回调
  196. if(data.result == 0){
  197. // var url=data.jsonp;
  198. // Util.getJsonp(url,function(data){
  199. callback && callback(data);
  200. // });//通过url来获取加密信息,并解密
  201. }
  202. },'json');
  203. };
  204. var prveChapter=function(){//上一页
  205. Chapter_id=parseInt(Chapter_id);
  206. if(Chapter_id == 0){
  207. return;
  208. }
  209. Chapter_id -= 1;
  210. //调用方法获取 Chapter_id章节信息
  211. getCurChaptInfo(Chapter_id,function(data){
  212. //console.log(data);
  213. readerUIFrame(data);//渲染html数据
  214. });
  215. Util.StorageSetter("ChapterId",Chapter_id);
  216. };
  217. var nextChapter=function(){//下一页
  218. Chapter_id=parseInt(Chapter_id);
  219. if(Chapter_id == ChapterTotal){
  220. return;
  221. }
  222. Chapter_id += 1;
  223. //调用方法获取 Chapter_id章节信息
  224. getCurChaptInfo(Chapter_id,function(data){
  225. //console.log(data);
  226. readerUIFrame(data);
  227. });
  228. Util.StorageSetter("ChapterId",Chapter_id);
  229. };
  230. return{
  231. init:init,
  232. prveChapter:prveChapter,
  233. nextChapter:nextChapter
  234. }
  235. }
  236. function EventHandler(){//业务事件处理层
  237. //点击主体中间事件
  238. $("#action_mid").click(function(){
  239. if(Dom.nav_top.css('display')=="none"){
  240. Dom.nav_top.show();
  241. Dom.nav_bottom.show();
  242. }else{
  243. Dom.nav_top.hide();
  244. Dom.nav_bottom.hide();
  245. Dom.font_Pop.hide();
  246. Dom.icon_Aa.css('border','');
  247. Dom.icon_yejian.css('border','');
  248. }
  249. });
  250. //点击书架事件
  251. $("#nav_text").click(function(){
  252. window.location = "./pages/bookstand.html";
  253. });
  254. //点击字体事件
  255. $(".btn_Aa").click(function(){
  256. if (Dom.font_Pop.css('display') == 'none') {
  257. Dom.icon_Aa.css('border','1px solid #FF7800');
  258. Dom.font_Pop.show();
  259. } else{
  260. Dom.icon_Aa.css('border','');
  261. Dom.font_Pop.hide();
  262. }
  263. });
  264. //点击夜间事件
  265. $(".btn-yejian").click(function(){
  266. if (Dom.body.css('background-color')!="rgb(40, 53, 72)") {
  267. bkCurrColor='#283548';
  268. //$(".bkColor").find('.bk-container-current')[0].className='';
  269. Dom.body.css('background-color',bkCurrColor);
  270. Dom.icon_yejian.css('border','1px #FF7800 solid');
  271. $("#hl").addClass('bk-container-current');
  272. } else{
  273. bkCurrColor='#e9dfc7';
  274. Dom.body.css('background-color',bkCurrColor);
  275. Dom.icon_yejian.css('border','');
  276. $("#hl").removeClass('bk-container-current');
  277. $("#mb").addClass('bk-container-current');
  278. }
  279. Util.StorageSetter("bkgroundcolor",bkCurrColor);
  280. });
  281. //滚动条事件
  282. Dom.win.scroll(function(){
  283. Dom.nav_top.hide();
  284. Dom.nav_bottom.hide();
  285. Dom.font_Pop.hide();
  286. Dom.icon_Aa.css('border','');
  287. Dom.icon_yejian.css('border','');
  288. })
  289. //点击 大、小事件
  290. Dom.btn_Big.click(function(){
  291. if(InitFontSize>=20){
  292. return;
  293. }
  294. InitFontSize+=1;
  295. console.log(InitFontSize);
  296. $("p").css('font-size',InitFontSize);
  297. Util.StorageSetter("font_size",InitFontSize);
  298. });
  299. Dom.btn_Small.click(function(){
  300. if(InitFontSize<=12){
  301. return;
  302. }
  303. InitFontSize-=1;
  304. console.log(InitFontSize);
  305. $("p").css('font-size',InitFontSize);
  306. Util.StorageSetter("font_size",InitFontSize);
  307. });
  308. //点击背景颜色切换
  309. $(".bk-container").bind('click',function(){
  310. if ($(".bkColor").find('.bk-container-current').length>0) {
  311. $(".bkColor").find('.bk-container-current')[0].className='';
  312. } else{
  313. }
  314. var id= this.firstElementChild.id;
  315. $("#"+id).addClass('bk-container-current');
  316. switch (id){
  317. case 'mb':
  318. Dom.body.css('background-color','#f7eee5');
  319. break;
  320. case 'zz':
  321. Dom.body.css('background-color','#e9dfc7');
  322. break;
  323. case 'qh':
  324. Dom.body.css('background-color','#a4a4a4');
  325. break;
  326. case 'hy':
  327. Dom.body.css('background-color','#cdefce');
  328. break;
  329. case 'hl':
  330. Dom.body.css('background-color','#283548');
  331. break;
  332. default:
  333. break;
  334. }
  335. Util.StorageSetter("bkgroundcolor",Dom.body.css('background-color'));
  336. });
  337. $("#btn_prev").click(function(){
  338. readerm.prveChapter();
  339. });
  340. $("#btn_next").click(function(){
  341. readerm.nextChapter();
  342. });
  343. }
  344. </script>
  345. </body>
  346. </html>