微信小程式-動態列表項的順序載入動畫
阿新 • • 發佈:2019-02-07
效果
思路
1、最開始用了純CSS動畫animation,發現動畫需要重複寫,於是換使用transition動畫。
2、使用onReady()可以讓頁面載入好再顯示動畫以免動畫提前結束。
程式碼
wxml
<!-- style中的主要為了區分已載入好的項和新資料,只有新資料有動畫 --> <view wx:for="{{lists}}" class="common" style='opacity:{{index >= (page-1)*2?op:"1"}};margin-left:{{index >= (page-1)*2?mr:"0"}}rpx;transition:all {{index >= (page-1)*2?(index-(page-1)*2)*0.5+0.5:"0"}}s;' > 第{{index}}條 </view> <view bindtap='next' style='position:relative;right:-150px;top:50rpx;'>下一頁</view>
wcss
page{
background: #eee
}
.common{
height: 100rpx;
opacity: 0;
margin-left: -50rpx;
background: #fff;
margin-top: 20rpx;
line-height: 100rpx;
padding: 25rpx;
}
js
Page({ data: { list: ['啦啦啦', '嚯嚯嚯'], lists: ['啦啦啦', '嚯嚯嚯'], page:1 }, onLoad: function (options) { }, onReady:function(e){ this.setData({ op: 1, mr:0 }) }, next:function(e){ this.data.page ++; //模擬從後臺獲取到了下一頁的資料,附加到原有陣列上 var lists = this.data.lists.concat(this.data.list) this.setData({ lists:lists, page: this.data.page, op: 0, mr: -50 }) this.onReady(); }, })