美文网首页
小程序 -多行滚动

小程序 -多行滚动

作者: 汀上 | 来源:发表于2018-10-31 21:46 被阅读0次

场景:几条信息的自动滑动效果,利用scroll-view
html:

//这里scroll-view的高度是定值,就是你要显示的区域的高度,需要精确,否则会出事,如果怕出事,在外边包一层,保险
<view class='indexList'>
  <scroll-view scroll-y="true" style='height:100%;overflow-y:hidden;' scroll-with-animation="true" scroll-into-view="{{toView}}"  bindscroll='bindscroll'>
    <view class='{{item?"indexList-list":"indexList-nolist"}}' wx:for='{{dataList}}'  wx:key='index' id='top{{index}}'>
      <text data-item='{{item}}' >{{item}}</text>
    </view>
  </scroll-view>
</view>

css:

.indexList {
  width: 100%;
  text-align: center;
  height: 342rpx;
}
.indexList-list {
 padding-top: 40rpx;
  width: 100%;
}
.indexList-nolist>text{
  padding: 0;
  margin: 0;
}
.indexList-list>text {
  padding: 20rpx 40rpx;
  height: 34rpx;
  font-size: 24rpx;
  color: #666;
  line-height: 34rpx;
  background: linear-gradient(180deg, rgba(69, 195, 255, 0.098) 0%, rgba(33, 144, 255, 0.098) 100%);
  border-radius: 23px;
  display: inline-block;
}

js:

page: function(msgList) {
    let i = 3;  //注意这里的i和下边那个全局的i是不一样的
    let _this = this;
    let timer = setInterval(function() {
      _this.data.dataList.push(msgList[i]);
      i++;
      _this.setData({
        dataList: _this.data.dataList,
        toView: "top" + Number(i - 1)  //控制scroll-view滚动
      })
      if (i == msgList.length + 1) {
        _this.setData({
          dataList: msgList.slice(0, 3),
          i: 0
        })
        i = 3;
      }
    }, 5000)
    this.setData({
      timer: timer
    })
  },
//监听scroll-view的滑动,如果向上滑动了,把当前页面内滑动到上层的数据清空,这样手动滑动scroll-view时就不会发生滚动事件了
  bindscroll: function(e) {
    let _this = this;
    if (e.detail.scrollTop) {
      _this.data.dataList[_this.data.i] = '';
      _this.data.i++ ; //这里i是全局变量,初始值为零,为了让它随着数组的移动删除最上边的东西
        this.setData({
          dataList: _this.data.dataList,  //刷新页面上的数组,这里的效果就是['','','','','111','222','333'],为空的就会不显示,就假装这里空的就被删掉了
          i: _this.data.i
        })
    }
  },

其中,msgList是一个要滚动的数据列表,dataList是要在页面上显示的列表,由于我这里页面上就三条数据,我的dataList一开始就是一个长度为三的数组(如果一条数据都没有,会渐渐加到三条然后再开始滚动),调用的时候直接this.page(msgList)就可以了

在网上找的都是一行滑动的,不满足项目需求,临时想的这个方法,挺麻烦的,可能是我钻了必须用scroll-view的牛角尖,等待找到更简便的方法实现这个效果

相关文章

网友评论

      本文标题:小程序 -多行滚动

      本文链接:https://www.haomeiwen.com/subject/ggpgtqtx.html