webAPP阅读器实现

       学而不死则罔,思而不学则殆。。  

       对手机阅读器进行简单的模拟。整个项目的布局主要包括正常文档流中的文章标题、文章正文及上下翻页按钮,处于非文档流中上下导航栏及选项面板。通过事件进行样式的切换,并利用localStorage进行样式的存储。同时,进行相关文档的撰写。利用分治思想将页面布局进行划分,位于文档流中的正文部分加一层div用于点击时触发处于固定位置上下导航栏及选项面板弹出。位于导航栏及选项面板内部的元素使用绝对定位确定位置。利用JavaScript及jQuery进行元素的DOM操作、样式切换、事件操作、数据存储等。

 

       本文实现的阅读器,文章标题及正文部分位于正常的文档流中,当点击屏幕中间时,弹出顶部及底部导航栏(包括最底部导航栏与样式面板)。其中顶部导航栏主要用于返回文档开始处,对其进行固定定位,确定其弹出后的固定位置;而底部导航栏也设置固定定位,其内主要有目录、字体、阅读模式模块,主要用于对阅读体验效果进行设置。导航栏内部的子元素都处于绝对定位。利用jQuery通过事件交互来动态显示或隐藏导航栏信息。同时,利用localStorage存储设置后的样式效果。这里需要注意,当滚动上下文时导航栏应该隐藏,包括样式面板。其每次设置的样式可以通过localStorage进行存储,这里localStorage可进行封装,防止变量名冲突,然后利用其setItem与getItem进行存取数据。

 

   

 

效果图:

源码:https://github.com/sunshineqt/reader/tree/master/reader/reading

 

ps:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(function(){
            var Util = (function(){
            var prefix = 'html5_reader';
            // 封装localStorage存储,防止方法中命名冲突,
            var StorageGetter = function(key){
                 return localStorage.getItem(prefix + key);
            }
            var StorageSetter = function(key, val){
                 return localStorage.setItem(prefix + key,val);
            }
            
            return {
                 
                StorageGetter:StorageGetter,
                StorageSetter:StorageSetter
            }
        })(); 
 
 
 var bkColor = Util.StorageGetter('background-color');
        if(!bkColor){
            bkColor = 'red';
        }
        RootContainer.css('background-color',bkColor);
 
 
$('#bk-container1').click(function(){
                var bkColor = $("#bk-container1").css("background-color");
                RootContainer.css('background-color',bkColor);
                Util.StorageSetter('background-color',bkColor);
 
                // RootContainer.css('background','#fdf');
});

  

posted @   安静的嘶吼  阅读(848)  评论(2编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示