【微信小程序】scroll-view实现字幕滚动

需求:

实现框内的文字自下而上的自动循环滚动。

解决方案:

通过控制滑动条来完成字幕滚动,通过setinterval完成字幕循环滚动。

wxml:

<scroll-view class="container" scroll-y="true" bindscroll="scroll" scroll-top="{{scrollTop}}">
  <view class='list'>
    <view class='blank'></view>
    <view>
      <text class="txt-light">09:08</text> 很多人的一生,基本都是自己跟别人较劲,比如别人对自己的期待,比如把别人看得太重把自己看得太轻。其实一个人最应该考虑的问题是,自己如何与自己相处,比如人去楼空的时候如何照顾好自己的孤独,比如夜深人静的时候如何跟心灵沟通。自己跟自己能和谐共处,自己跟别人就能相安无事。
    </view>
    <view>
      <text class="txt-light">19:08</text> 平和是待人处事的一种态度,也是做人酌一种美德。平和既是一种修养,又是一种工作方法。平和的人,从不被忙碌所萦绕,闲时吃紧,忙里悠闲。待人不严,教人勿高。宽严得宜,分寸得体。身心自在,能享受生活之乐趣。平和的人生,是和谐的人生,健康的人生。
    </view>
    <view class='blank'></view>
  </view>
</scroll-view>

wxss:

.container {
  background-color: #FAEBD7;
  height: 150rpx;
}

.txt-light {
  color: #acadbe;
}

.blank {
  height: 150rpx;
}

js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    scrollTop:0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取scroll-view的节点信息
    //创建节点选择器
    var query = wx.createSelectorQuery();
    query.select('.container').boundingClientRect()
    query.select('.list').boundingClientRect()
    query.exec((res) => {
      var containerHeight = res[0].height;
      var listHeight = res[1].height;

      // 滚动条的高度增加
      var interval = setInterval(() => {
        if (this.data.scrollTop < listHeight - containerHeight) {
          this.setData({
            scrollTop: this.data.scrollTop + 10
          })
        } else {
          // clearInterval(interval);
          this.setData({
            scrollTop: 0
          })
        }
      }, 1000)
    })
    
  },
  scroll: function () {
    // 获取scroll-view的节点信息
    //创建节点选择器
    var query = wx.createSelectorQuery();
    query.select('.list').boundingClientRect()
    query.exec((res) => {
      this.setData({
        scrollTop: -(res[0].top)
      })
      // console.log(res);
    })
  }
})

tips:此次字幕滚动,即可自动滚动,也可拖动。

上一版实现方式

猜你喜欢

转载自blog.csdn.net/hao_0420/article/details/81029723