关于小程序 scroll

在最近的项目有做到关于小说阅读的进度条功能,其中用到scroll-view和slider组件,发现scroll-view中的scroll-top在设置值后无效,出现这种情况大概是以下几种问题:

1.scroll-view的高度需要设置固定的值,比如全屏可以设置:height:100vh;

2.不可以同时设置scroll-into-view和scroll-top(scroll-left)属性,因为scroll-into-view的优先级别比scroll-top(scroll-left)属性高(官方文档提及过);

3.scroll-top(scroll-left)属性不可以带单位,直接设置值就可以了,如:scroll-top="50";

以下是小说图书阅读进度条案例代码,思路为:scroll-view作为文章滚动区域,slider为显示进度的滑动条,之间通过百分比的数“连接”,具体代码往下:

1 <view>
2    <scroll-view scroll-y style="height:100vh" bindscroll="articelScroll" scroll-with-animation="true" scroll-top="{{textScroll}}">
3      <text>起初,对于追风筝的人这样的命题是难以理借解,至于其中所蕴含的深意, 纵使读罢全书亦不知所言。姑且不论所谓书名的深度和广度,就其故事本身而言,便给了我巨大的震撼。书中开篇所言,便是一种对曾经的畏惧和被永生锁在梦魇中的悲伤。为你千千万万遍, 第一次这句话的出现,便让我震撼莫名。我不知道这句话何时说出口,至于当时的气氛和情态也一无所知,但就这句话的内容,为,你,千,千,万,万,遍。其中所包含的无悔与执着,纵使天荒地老也不改的初心。 顿时,我有些嫉妒书中的“我“,相比于往往独行客的我,那些无悔的宣言,是我从未听到过的传说。
4      </text>
5    </scroll-view>
6    <view> 
7       <slider bindchange="slider1change" max="200" min="0" step="5" value="{{scrollValue}}"  activeColor="#333"/>
8    </view> 
9 </view>
var app = getApp()
Page({
  data: {
    scrollHeight:0,
    scrollValue:0,
    textScroll:1
  },
    // slider滑动条滑动触发
  slider1change:function(e){
    var value=e.detail.value;                  //获取slider滑动的当前值
    var scrollHeight = this.data.scrollHeight; //获取scroll-view的scroll-height值
    value=value/295*100;                       //计算出slider滑动的百分比
    var textscroll = value/100 * scrollHeight; //计算出scroll-view对应的值

    this.setData({
      textScroll: textscroll
    })
  },
    //scroll-view滑动
  articelScroll:function(e){
    var win = e.detail.scrollHeight;           
    var scroll = e.detail.scrollTop;
    win = win - 670;                             //算出大概的实质滑动高度
    var ballLeft = parseInt((scroll / win)*100); //算出滑动的百分比
    var sliderVal = parseInt(ballLeft/100*293);  //算出slider对应的值
    this.setData({
      scrollValue: sliderVal,
      scrollHeight: win
    })
  }
})    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春哥一号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值