<view class="container"> <view class='list' animation="{{animationData}}"> <block wx:for="{{data}}"> <view bindtap='bna' data-id='{{index}}'> {{item}} </view> </block> </view> </view>
.container { overflow: hidden; } .container { background-color: #ccc; height:100rpx; margin:0; padding:0; } .container { overflow: hidden; } .txt-light { color:#acadbe; }
Page({ /** * 页面的初始数据 */ data: { data: ['1`', '2`', '3`', '4`', '5`'] }, bna:function(e){ console.log(e) }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function() { }, /** * 生命周期函数--监听页面显示 */ onShow: function() { // this.util(); this.getHeight(); }, util: function(obj) { console.log(obj); console.log(-obj.list); var continueTime = (parseInt(obj.list / obj.container) + 1) * 1500; var setIntervalTime = 50 + continueTime; var animation = wx.createAnimation({ duration: 10, //动画时长 timingFunction: "linear", //线性 delay: 0 //0则不延迟 }); this.animation = animation; animation.translateY(obj.container).step({ duration: 50, timingFunction: 'step-start' }).translateY(-obj.list).step({ duration: continueTime }); this.setData({ animationData: animation.export() }) setInterval(() => { animation.translateY(obj.container).step({ duration: 50, timingFunction: 'step-start' }).translateY(-obj.list).step({ duration: continueTime }); this.setData({ animationData: animation.export() }) }, setIntervalTime) }, getHeight() { var obj = new Object(); //创建节点选择器 var query = wx.createSelectorQuery(); query.select('.container').boundingClientRect() query.select('.list').boundingClientRect() query.exec((res) => { obj.container = res[0].height; // 框的height obj.list = res[1].height; // list的height // return obj; this.util(obj); }) } })