最近用微信小程序写了一个图书阅读器,可以实现左右滑动翻页,按钮翻页,上下滚动,切换背景,控制字体大小。以及记住设置好的状态,如页面再次进来保留上次的背景色和字体大小。

由于暂时没有真实的数据接口,所以我用了静态数据。

<!-- 文本 -->
<view class="container" style="background:{{bodyColor}}">
<!-- 中间层,点击,头部底部显示 -->
<view class="artical-action-mid" bindtap="midaction" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></view>
<!-- 主体内容 -->
<scroll-view scroll-top="{{scroll_top}}" class="m-read-content" scroll-y style="font-size:{{initFontSize}}px;" bindscroll="scrollContain" bindscrolltolower="bindscrolltolower" >
{{Text}}
</scroll-view>
</view>
<!-- 字体调节 -->
<view class="top-nav-pannel font-container" style="display:{{ziti}}">
<view class="child-mod">
<view class="span">字号</view>
<text class="spe-button" bindtap="bindBig">大</text>
<text class="spe-button" style="margin-left:10px;" bindtap="bindSmall">小</text>
</view>
<view class="child-mod">
<view class="span">背景</view>
<block wx:for="{{colorArr}}" wx:for-item="color" wx:key="this">
<view class="bk-container {{_num==index?'bk-container-current':''}}" data-num="{{index}}" style="background-color:{{color.value}}" bindtap="bgChange"></view>
</block>
</view>
</view>
<!-- 上一页下一页 -->
<view class="m-button-bar" style="display:{{zj}}">
<view class="u-tab">
<view class="uli" bindtap="lastPage">上一页</view>
<view class="uli" style="border-right:none" bindtap="nextPage">下一页</view>
</view>
</view>
<!-- 底部 -->
<view class="bottom-nav bottom_nav" style="display:{{nav}}">
<view class="item menu-button">
<view class="item-warp">
<view class="icon-menu"></view>
<view class="icon-text">目录</view>
</view>
</view>
<view class="item current" bindtap="zitiaction">
<view class="item-warp">
<view class="icon-ft"></view>
<view class="icon-text">字体</view>
</view>
</view>
<view class="item" bindtap="dayNight">
<view class="item-warp" wx:if="{{daynight}}">
<view class="icon-day"></view>
<view class="icon-text">白天</view>
</view>
<view class="item-warp" wx:else>
<view class="icon-night"></view>
<view class="icon-text">夜间</view>
</view>
</view>
</view>
//logs.js
var util = require('../../utils/util.js')
var touchDot = ;//触摸时的原点
var time = ;// 时间记录,用于滑动时且时间小于1s则执行左右滑动
var interval = "";// 记录/清理时间记录
Page({
data: {
// logs: []
scroll_top: ,
Text:"大婚当天,她在郊外醒来,衣衫褴褛,在众人的鄙夷下,一步一个血印踏入皇城……她是无父无母任人欺凌的孤女,他是一人之下、万人之上的铁血王爷。她满身是伤,狼狈不堪。他遗世独立,风华无双。她卑微伏跪,他傲视天下。如此天差地别的两人,却阴差阳错地相遇……一件锦衣,遮她一身污秽,换她一世情深。21世纪天才女军医将身心托付,为这铁血王爷风华天下、舔刃饮血、倾尽一切,只求此生结发为夫妻,恩爱两不疑,却不想生死关头,他却挥剑斩断她的生路……医者:下医医病,中医医人,上医医国。神医凤轻尘,以医术救人治国平天下大婚当天,她在郊外醒来,衣衫褴褛,在众人的鄙夷下,一步一个血印踏入皇城……她是无父无母任人欺凌的孤女,他是一人之下、万人之上的铁血王爷。她满身是伤,狼狈不堪。他遗世独立,风华无双。她卑微伏跪,他傲视天下。如此天差地别的两人,却阴差阳错地相遇……一件锦衣,遮她一身污秽,换她一世情深。21世纪天才女军医将身心托付,为这铁血王爷风华天下、舔刃饮血、倾尽一切,只求此生结发为夫妻,恩爱两不疑,却不想生死关头,他却挥剑斩断她的生路……医者:下医医病,中医医人,上医医国。神医凤轻尘,以医术救人治国平天下的传奇的传奇",
initFontSize:'',
colorArr: [{
value: '#f7eee5',
name: '米白',
font: ''
}, {
value: '#e9dfc7',
name: '纸张',
font: '',
id: "font_normal"
}, {
value: '#a4a4a4',
name: '浅灰',
font: ''
}, {
value: '#cdefce',
name: '护眼',
font: ''
}, {
value: '#283548',
name: '灰蓝',
font: '#7685a2',
bottomcolor: '#fff'
}, {
value: '#0f1410',
name: '夜间',
font: '#4e534f',
bottomcolor: 'rgba(255,255,255,0.7)',
id: "font_night"
}],
nav:'none',
ziti:'none',
_num:,
bodyColor:'#e9dfc7',
daynight:false,
zj:'none' },
onLoad: function () {
// this.setData({
// logs: (wx.getStorageSync('logs') || []).map(function (log) {
// return util.formatTime(new Date(log))
// })
// })
// 本地提取字号大小
var that = this;
wx.getStorage({
key: 'initFontSize',
success: function (res) {
// console.log(res.data)
that.setData({
initFontSize: res.data
})
}
})
//存储背景色
wx.getStorage({
key: 'bodyColor',
success: function (res) {
// console.log(res.data)
that.setData({
bodyColor: res.data
})
}
})
wx.getStorage({
key: '_num',
success: function (res) {
// console.log(res.data)
that.setData({
_num: res.data
})
}
})
wx.getStorage({
key: 'daynight',
success: function (res) {
// console.log(res.data)
that.setData({
daynight: res.data
})
}
})
//数据接口
wx.request({
url: 'http://book.baiwancangshu.com/Books/bookRead', //仅为示例,并非真实的接口地址
data: {
"bookId": "",
"chapterId": "",
"isDel": ,
"token": "",
"os": ,
"channel": "",
"netname": "m"
},
method:'POST',
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
console.log(res.data)
}
})
},
//事件处理函数
//字体变大
bindBig: function () {
var that=this;
if (that.data.initFontSize>){
return;
}
var FontSize=parseInt(that.data.initFontSize)
that.setData({
initFontSize: FontSize +=
})
// console.log(that.data.initFontSize)
wx.setStorage({
key: "initFontSize",
data: that.data.initFontSize
})
},
//字体变小
bindSmall: function () {
var that = this;
if (that.data.initFontSize <) {
return;
}
var FontSize = parseInt(that.data.initFontSize)
that.setData({
initFontSize: FontSize -=
})
// console.log(that.data.initFontSize)
wx.setStorage({
key: "initFontSize",
data: that.data.initFontSize
})
},
//点击中间区域显示底部导航
midaction:function(){
if (this.data.nav=='none'){
this.setData({
nav:'block'
})
}else{
this.setData({
nav: 'none',
ziti: 'none'
}) }
},
//点击字体出现窗口
zitiaction:function(){
if (this.data.ziti == 'none') {
this.setData({
ziti: 'block'
})
} else {
this.setData({
ziti: 'none'
})
}
},
//选择背景色
bgChange:function(e){
// console.log(e.target.dataset.num)
// console.log(e)
this.setData({
_num: e.target.dataset.num,
bodyColor: this.data.colorArr[e.target.dataset.num].value
})
wx.setStorage({
key: "bodyColor",
data: this.data.colorArr[e.target.dataset.num].value
})
wx.setStorage({
key: "_num",
data: e.target.dataset.num
})
},
//切换白天夜晚
dayNight:function(){
if(this.data.daynight==true){
this.setData({
daynight:false,
bodyColor:'#e9dfc7',
_num:
})
wx.setStorage({
key: "bodyColor",
data: '#e9dfc7'
})
wx.setStorage({
key: "_num",
data:
}) }else{
this.setData({
daynight: true,
bodyColor: '#000',
_num:
})
wx.setStorage({
key: "bodyColor",
data: '#000'
})
wx.setStorage({
key: "_num",
data:
})
}
wx.setStorage({
key: "daynight",
data: this.data.daynight
})
},
//滚动隐藏窗口
scrollContain:function(){
this.setData({
nav: 'none',
ziti: 'none',
zj:'none'
})
},
//滚动到底部
bindscrolltolower:function(){
this.setData({
zj: 'block',
})
},
//上一页下一页
lastPage:function(){
this.setData({
Text: '和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。',
scroll_top:
})
},
nextPage:function(){
this.setData({
Text: '这一对翁婿,直接越过顾千城,也不管顾千城的意愿,三言两语就同意了换新娘达成所愿,秦云楚满意的停下脚步,笑容满面的转身:“国公爷早同意不就没事,至于我父王和母妃那边,国公爷不必担心,本世子自会解释。”一事。和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。',
scroll_top:
})
},
// 触摸开始事件
touchStart: function (e) {
touchDot = e.touches[].pageX; // 获取触摸时的原点
// 使用js计时器记录时间
interval = setInterval(function () {
time++;
}, );
},
// 触摸移动事件
touchMove: function (e) {
var touchMove = e.touches[].pageX;
// console.log("touchMove:" + touchMove + " touchDot:" + touchDot + " diff:" + (touchMove - touchDot));
// 向左滑动
if (touchMove - touchDot <= - && time < ) {
// wx.switchTab({
// url: '../左滑页面/左滑页面'
// });
// console.log("left")
this.setData({
Text: '和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。',
scroll_top:
})
}
// 向右滑动
if (touchMove - touchDot >= && time < ) {
// console.log('right');
// wx.switchTab({
// url: '../右滑页面/右滑页面'
// });
this.setData({
Text: '这一对翁婿,直接越过顾千城,也不管顾千城的意愿,三言两语就同意了换新娘达成所愿,秦云楚满意的停下脚步,笑容满面的转身:“国公爷早同意不就没事,至于我父王和母妃那边,国公爷不必担心,本世子自会解释。”一事。和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。',
scroll_top:
})
}
},
// 触摸结束事件
touchEnd: function (e) {
clearInterval(interval); // 清除setInterval
time = ;
}
})

微信小程序(5)--阅读器的更多相关文章

  1. 微信小程序自运营器 微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营)

    自动发单,自动评价,自动评论,自动推广 微信小程序自运营器  微信小程序自动运营器(让你的微信小程序,公众号零运营成本,24小时全自动运营) 我们会根据你的微信公众号或微信小程序定制开发带有一定AI智 ...

  2. 微信小程序api拦截器

    微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大 ...

  3. 微信小程序音乐播放器

    写在前面 1.入门几天小白的作品,希望为您有帮助,有好的意见或简易烦请赐教 2.微信小程序审核音乐类别已经下架,想要发布选题需慎重.附一个参考链接,感谢https://www.hishop.com.c ...

  4. 微信小程序——音频播放器

    先来个效果图韵下味: 需求: 音频的播放,暂停,中间按钮状态的变化,播放时实时更新播放进度: 前进15s,后退15s: 进度条拖动. 一开始想着这3个功能应该挺简单的.不就是播放,暂停,前进,后退么~ ...

  5. 微信小程序音乐播放器组件

    wxml <image bindtap="click" src="{{isPlay?'/images/':'/images/'}}"/> JS Pa ...

  6. 近期热门微信小程序demo源码下载汇总

    近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...

  7. 微信小程序代码大全 - 小程序开发福利

    小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...

  8. 史上最全的微信小程序代码大全

    --------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...

  9. 微信小程序案例大全

    微信小程序demo:足球,赛事分析 小程序简易导航 小程序demo:办公审批 小程序Demo:电魔方 小程序demo:借阅伴侣 微信小程序demo:投票 微信小程序demo:健康生活 小程序demo: ...

  10. 微信小程序源码案例大全

    微信小程序demo:足球,赛事分析 小程序简易导航 小程序demo:办公审批 小程序Demo:电魔方 小程序demo:借阅伴侣 微信小程序demo:投票 微信小程序demo:健康生活 小程序demo: ...

随机推荐

  1. php实现进度条原理

    PHP实现进度条的原理: 模版替换,在页面设置一个标识,轮子自己的页面,不发请求给服务器,由服务器端获得进度,然后替换该页面标识,达到进度条效果. 页面代码: 1 2 3 4 5 6 7 8 9 10 ...

  2. ubantu elasticsearch服务搭建

    1.jdk 1.8以上,elasticsearch是java开发的 [root@VM_58_118_centos sgconfig]# java -version java version " ...

  3. Just Skip The Problem

    http://acm.hdu.edu.cn/showproblem.php?pid=6600 题意:给你一个数x,允许你多次询问yi,然后回答你x xor yi 是否等于yi,询问尽量少的次数以保证能 ...

  4. [CSP-S模拟测试]:Travel(贪心+构造)

    题目描述 给定一个长度为$n$的格子序列$x_1,x_2,...,x_n$.每一次$Lyra$可以选择向左跳到任意一个还没到过的位置,也可以向右跳到任意一个还没到过的位置.如果现在$Lyra$在格子$ ...

  5. window.frames[iframe].document 在ie可以用,在360、火狐中都不兼容?

    <iframe id="myf" scrolling="auto" frameborder="0" src="" ...

  6. R 保存包含中文的 eps 图片--showtext

    来自统计之都,感谢 Ihavenothing(http://cos.name/cn/profile/81532) 详情参考:http://cos.name/cn/topic/151358?replie ...

  7. Python基础学习:operator模块

    operator——函数的标准操作 转自:https://blog.csdn.net/zhtysw/article/details/80510113 代码资源:Lib/operator.py oper ...

  8. gitlab+jenkins自动化打包IOS-jenkins配置

    实现的效果如图:  构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...

  9. 深入理解Redis的持久化机制和原理

    Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到, ...

  10. 【转载】阿里入局,独角兽估值30亿美金,谈谈RPA是什么

    缩短法定工作时间,已成国际劳动立法趋势,全球政府都曾面对这样的议题,过往企业IT也在思考这件事,开发出更好的软件系统帮助员工,就是普遍作法,这也已经行之有年,而现阶段最有效的作法,则是要用AI来提供帮 ...