微信小程序(5)--阅读器

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

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

<!-- 文本 -->
<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 = 0;//触摸时的原点
var time = 0;// 时间记录,用于滑动时且时间小于1s则执行左右滑动
var interval = "";// 记录/清理时间记录
Page({
  data: {
    // logs: []
    scroll_top: 0,
    Text:"大婚当天,她在郊外醒来,衣衫褴褛,在众人的鄙夷下,一步一个血印踏入皇城……她是无父无母任人欺凌的孤女,他是一人之下、万人之上的铁血王爷。她满身是伤,狼狈不堪。他遗世独立,风华无双。她卑微伏跪,他傲视天下。如此天差地别的两人,却阴差阳错地相遇……一件锦衣,遮她一身污秽,换她一世情深。21世纪天才女军医将身心托付,为这铁血王爷风华天下、舔刃饮血、倾尽一切,只求此生结发为夫妻,恩爱两不疑,却不想生死关头,他却挥剑斩断她的生路……医者:下医医病,中医医人,上医医国。神医凤轻尘,以医术救人治国平天下大婚当天,她在郊外醒来,衣衫褴褛,在众人的鄙夷下,一步一个血印踏入皇城……她是无父无母任人欺凌的孤女,他是一人之下、万人之上的铁血王爷。她满身是伤,狼狈不堪。他遗世独立,风华无双。她卑微伏跪,他傲视天下。如此天差地别的两人,却阴差阳错地相遇……一件锦衣,遮她一身污秽,换她一世情深。21世纪天才女军医将身心托付,为这铁血王爷风华天下、舔刃饮血、倾尽一切,只求此生结发为夫妻,恩爱两不疑,却不想生死关头,他却挥剑斩断她的生路……医者:下医医病,中医医人,上医医国。神医凤轻尘,以医术救人治国平天下的传奇的传奇",
    initFontSize:‘14‘,
    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:1,
    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": "86",
          "chapterId": "2",
          "isDel": 1,
          "token": "",
          "os": 3,
          "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>20){
      return;
    }
    var FontSize=parseInt(that.data.initFontSize)
    that.setData({
      initFontSize: FontSize +=1
    })
    // console.log(that.data.initFontSize)
    wx.setStorage({
      key: "initFontSize",
      data: that.data.initFontSize
    })
  },
  //字体变小
  bindSmall: function () {
    var that = this;
    if (that.data.initFontSize <12) {
      return;
    }
    var FontSize = parseInt(that.data.initFontSize)
    that.setData({
      initFontSize: FontSize -= 1
    })
    // 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:1
       })
       wx.setStorage({
         key: "bodyColor",
         data: ‘#e9dfc7‘
       })
       wx.setStorage({
         key: "_num",
         data:1
       })

      }else{
        this.setData({
          daynight: true,
          bodyColor: ‘#000‘,
          _num:5
        })
        wx.setStorage({
          key: "bodyColor",
          data: ‘#000‘
        })
        wx.setStorage({
          key: "_num",
          data:5
        })
      }
      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: 0
    })
  },
  nextPage:function(){
    this.setData({
      Text: ‘这一对翁婿,直接越过顾千城,也不管顾千城的意愿,三言两语就同意了换新娘达成所愿,秦云楚满意的停下脚步,笑容满面的转身:“国公爷早同意不就没事,至于我父王和母妃那边,国公爷不必担心,本世子自会解释。”一事。和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。‘,
      scroll_top: 0
    })
  },
  // 触摸开始事件
  touchStart: function (e) {
    touchDot = e.touches[0].pageX; // 获取触摸时的原点
    // 使用js计时器记录时间
    interval = setInterval(function () {
      time++;
    }, 100);
  },
  // 触摸移动事件
  touchMove: function (e) {
    var touchMove = e.touches[0].pageX;
    // console.log("touchMove:" + touchMove + " touchDot:" + touchDot + " diff:" + (touchMove - touchDot));
    // 向左滑动
    if (touchMove - touchDot <= -40 && time < 10) {
      // wx.switchTab({
      //   url: ‘../左滑页面/左滑页面‘
      // });
      // console.log("left")
      this.setData({
        Text: ‘和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。‘,
        scroll_top: 0
      })
    }
    // 向右滑动
    if (touchMove - touchDot >= 40 && time < 10) {
      // console.log(‘right‘);
      // wx.switchTab({
      //   url: ‘../右滑页面/右滑页面‘
      // });
      this.setData({
        Text: ‘这一对翁婿,直接越过顾千城,也不管顾千城的意愿,三言两语就同意了换新娘达成所愿,秦云楚满意的停下脚步,笑容满面的转身:“国公爷早同意不就没事,至于我父王和母妃那边,国公爷不必担心,本世子自会解释。”一事。和婚礼相比,顾千城更秦云楚见顾国公久久不给准话,再次威胁道:“顾公国,新娘换不换?本世子还等着新娘上花轿,至于顾千城这残疾,你们爱嫁给谁就嫁让她嫁给谁,总之本世子不要。”关心自己受伤的脚,她现在只希望这场闹剧早点结束,不然她的脚撑不住。顾千城冷眼扫过观礼的客人,这些人纷纷别过脸,一脸尴尬。一伙看看秦云楚、一伙看看顾千城,无人开口。喜堂安静得吓人,似乎连针落地的声道都能听清这个时候,全福夫人收到示意,上前一步打破寂静:“顾国公,这身有残疾的女子确实不能嫁入皇家,顾家执意要大小姐嫁过去,只怕亲家结不成,反倒结成仇家了。”“荒唐,这哪里荒唐了,难道要本世子吃这个哑巴亏,把一个残废娶回家?”秦云楚一脸骄横,残疾二字越说越顺口,看顾千城的眼神,也是一脸嫌恶。‘,
        scroll_top: 0
      })
    }
  },
  // 触摸结束事件
  touchEnd: function (e) {
    clearInterval(interval); // 清除setInterval
    time = 0;
  }
})
时间: 2024-10-25 04:46:04

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

微信小程序api拦截器

微信小程序api拦截器 完美兼容原生小程序项目 完美兼用小程序api的原本调用方式,无痛迁移 小程序api全Promise化 和axios一样的请求方式 小程序api自定义拦截调用参数和返回结果 强大的async拦截 快速开始 安装 npm install wxapp-api-interceptors --save 详情 https://blog.csdn.net/rolan1993/article/details/80480341 原文地址:https://www.cnblogs.com/to

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

先来个效果图韵下味: 需求: 音频的播放,暂停,中间按钮状态的变化,播放时实时更新播放进度: 前进15s,后退15s: 进度条拖动. 一开始想着这3个功能应该挺简单的.不就是播放,暂停,前进,后退么~呵~写的时候发现自己还是太年轻.当然,这跟自己的技术功底有关系.现在把我遇到的难点及要注意的点说一下~ 需要设置一个名为seekPosition的全局变量,初始值为0.我们要在播放的时候实时记录播放的位置,存到该变量里,这是方便在前进15s 或 后退15s 时计算时间点. 前进15s时要判断剩余时间

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

微信小程序-整理各种小程序源码和资料免费下载

微信小程序整理下载 [小程序源码]微信小程序-车源宝微信版 [小程序源码]小程序-微赞社区(论坛demo) [小程序源码]微信小程序-收支账单 [小程序工具]微信小程序-日历 [小程序源码]小程序-在线聊天功能 [小程序源码]微信小程序-大好商城(新增功能天气查询和2048游戏) [小程序源码]微信小程序-查询号码归属地 [小程序源码]微信小程序-备忘录2 [小程序源码]微信小程序-QQ音乐 [小程序源码]小程序-货币汇率 [小程序源码]微信小程序-大学图书馆 [小程序源码]小程序-积分商城 [

微信小程序开发交流与推广

一.请加微信群: 请扫描下方的二维码加“微信小程序交流推广群”,由于微信群的限制,超过 100 人就不能扫码加群,大家可以先添加微信号:us9488 并备注“微信小程序”,然后拉你入群. 二.官方文档: 微信小程序介绍 微信小程序设计指南 微信小程序开发文档 微信小程序运营规范 微信小程序开发者社区 三.微信小程序解决方案: 微信小程序会话管理场景 微信小程序文件上传下载应用场景 微信小程序WebSocket长连接应用场景 微信小程序视频应用场景 四.代码: 会话管理场景 文件上传下载应用场景

微信小程序源码案例大全

微信小程序demo:足球,赛事分析 小程序简易导航 小程序demo:办公审批 小程序Demo:电魔方 小程序demo:借阅伴侣 微信小程序demo:投票 微信小程序demo:健康生活 小程序demo:文章列表demo 微商城(含微信小程序)完整源码+配置指南 微信小程序Demo:一个简单的工作系统 微信小程序Demo:用于聚会的小程序 微信小程序Demo:Growth 是一款专注于Web开发者成长的应用,- 微信小程序Demo: Music-Player 微信小程序Demo:团贷网(投资) 微信

微信小程序最新开发资源汇总,对学习微信小程序的新手有一定帮助

微信小程序最新开发资源汇总,希望给想学习或正在学习微信小程序开发的同学们带来一定帮助,汇总的小程序资源有点繁杂,各种类型的小程序demo都有,大家可以选择自己想要的demo进行下载学习.这些微信小程序资源大多是整理自github,如果可以,希望大家能够给github上的原作者一颗star,感谢原作者的无私奉献. 这里整理的是资源的原帖子,下载链接也在帖子里,当然本人也只体验了部分demo,有兴趣的同学可以都下载试试. 下载地址: 仿微信聊天,朋友圈小程序源码wepy框架开发的小程序商城源码,功能

微信小程序内测申请

想申请微信小程序的内测?别做梦了! 小程序内测是邀请制的,目前就发放了200个内测邀请.正因为稀缺,江湖传言内测资格已经炒到300万(一套房)一个了 但是!!!!你可以先熟悉一下相关资料和文档,下载一个开发工具在自己电脑上玩一下,虽然部分功能受到了限制,但是还是挺有意思的! 小程序开发过程中遇到的各种坑 摘要: 本文收集微信小程序.应用号开发过程中的各种坑,以及疑难问题.不定期整理解决方案. 如果你在开发过程中遇到了问题,请将你的问题在评论中回复,我会不定期整理. 本文收集微信小程序.应用号开发

微信小程序实例源码大全

怎么本地测试微信小程序实例源码 1.下载源码 2.打开微信开发者工具 3.添加项目->选择本项目目录->编译执行 微信小程序实例源码大全 微信小程序游戏类demo:识色:从相似颜色中挑选不同的一个 源码链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1105 微信小程序精品demo:仿网易云音乐:歌单,FM,播放,评论 源码链接:http://www.wxapp-union.com/forum.php?mod=vie

微信小程序实例源码大全demo下载

怎么本地测试微信小程序实例源码 1.下载源码 2.打开微信开发者工具 3.添加项目->选择本项目目录->编译执行 微信小程序实例源码大全 微信小程序游戏类demo:识色:从相似颜色中挑选不同的一个 源码链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=1105 微信小程序精品demo:仿网易云音乐:歌单,FM,播放,评论 源码链接:http://www.wxapp-union.com/forum.php?mod=vie