1. 程式人生 > >微信小程式-動態列表項的順序載入動畫

微信小程式-動態列表項的順序載入動畫

效果

 思路

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();
  },
})