小程序实现瀑布流动态加载列表

 更新时间:2022年07月27日 11:44:10   作者:工具人小胡  
这篇文章主要为大家详细介绍了小程序实现瀑布流动态加载列表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了小程序实现瀑布流动态加载列表的具体代码,供大家参考,具体内容如下

最近业务需要做一个商城列表,就自己写了一个瀑布流来加载列表。

这个列表在很多地方都需要用到,就给写成组件,方便使用。

1、goodsBox.js代码

想法很简单,就是判断两列的高度,将数据插入低的一列。

let leftHeight = 0,
  rightHeight = 0; //分别定义左右两边的高度
let query;
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    goodsList: {
      type: Array,
      value: []
    },
    loadingShow: {
      type: Boolean,
      value: false
    },
    noInfoShow: {
      type: Boolean,
      value: false
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    leftList: [],
    rightList: []
  },
  observers: {
  // 当goodsList发生变化时调用方法
    'goodsList': function (goodsList) {
      this.isLeft()
    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
    async isLeft() {
      const {
        goodsList,
        leftList,
        rightList
      } = this.data;
      query = wx.createSelectorQuery().in(this);
      let list = goodsList.slice(leftList.length+rightList.length,goodsList.length)
      for (const item of list) {
        leftHeight <= rightHeight ? leftList.push(item) : rightList.push(item); //判断两边高度,来觉得添加到那边
        await this.getBoxHeight(leftList, rightList);
      }
      
    },
    getBoxHeight(leftList, rightList) { //获取左右两边高度
      return new Promise((resolve, reject) => {
        this.setData({
          leftList,
          rightList
        }, () => {
          query.select('#left').boundingClientRect();
          query.select('#right').boundingClientRect();
          
          query.exec((res) => {
            leftHeight = res[0].height; //获取左边列表的高度
            rightHeight = res[1].height; //获取右边列表的高度
            resolve();
          });
        });
      })
    },
  }
})

这一块需要注意的是 wx.createSelectorQuery().in(this),将选择器的选取范围更改为自定义组件 component 内。微信文档.

2、goodsBox.wxml

这边主要就是把页面分成两列,一些css就不多写了

// wxml
<view class="box clearfix">
  <view id="left" class="left">
    <view class="shop_box" wx:for="{{leftList}}" wx:key="index" ></view>
  </view>
  <view id="right" class="right">
    <view class="shop_box" wx:for="{{rightList}}" wx:key="index" ></view>
  </view>
</view>
<view class="cu-load  loading" wx:if="{{loadingShow}}"></view>
<view class="cu-load  over" wx:if="{{noInfoShow}}"></view>

3、goodsBox.wxss

.left,.right{
  float: left;
}
.clearfix::after {
  content: ".";
  clear: both;
  display: block;
  overflow: hidden;
  font-size: 0;
  height: 0;
}
.clearfix {
  zoom: 1;
}

4、页面使用

现在json文件里面引用组件,然后使用组件

<goodsBox id="goodsBox" goodsList="{{goodsList}}" loadingShow="{{loadingShow}}" noInfoShow="{{noInfoShow}}"></goodsBox>

每次goodsList发生变化,组件就会调用瀑布流排列方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 不安全的常用的js写法

    不安全的常用的js写法

    一种很常见的写法,大家都是这样写的,但如果这样的代码,杀毒软件认为是病毒的吧,就太恶劣的。判断能力也太差了。
    2009-09-09
  • JS常用函数和常用技巧小结

    JS常用函数和常用技巧小结

    这篇文章主要介绍了JS常用函数和常用技巧小结的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • JS实现的图片选择顺序切换和循环切换功能示例【测试可用】

    JS实现的图片选择顺序切换和循环切换功能示例【测试可用】

    这篇文章主要介绍了JS实现的图片选择顺序切换和循环切换功能,结合完整实例形式分析了JavaScript基于事件响应与样式动态操作实现图片切换相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • JS控制文本域只读或可写属性的方法

    JS控制文本域只读或可写属性的方法

    这篇文章主要介绍了JS控制文本域只读或可写属性的方法,涉及javascript针对页面元素属性的动态操作技巧,需要的朋友可以参考下
    2016-06-06
  • javascript获取select值的方法完整实例

    javascript获取select值的方法完整实例

    这篇文章主要介绍了javascript获取select值的方法,结合完整实例形式分析了javascript动态遍历与操作页面元素相关实现技巧,需要的朋友可以参考下
    2019-06-06
  • 关于JavaScript实现动画时动画抖动的原因与解决方法

    关于JavaScript实现动画时动画抖动的原因与解决方法

    最近在使用JS动画做一些练习的时候我发现在动画执行时间内快速移开鼠标时会出现动画因鼠标移动过快从而导致代码冲突让画面抖动的bug,这篇文章主要给大家介绍了关于JavaScript实现动画时动画抖动的原因与解决方法,需要的朋友可以参考下
    2022-06-06
  • 浏览器加载、渲染和解析过程黑箱简析

    浏览器加载、渲染和解析过程黑箱简析

    浏览器加载、渲染和解析过程的黑箱分析,对于渲染,利用 Fiddler 将网速调慢,可以看到 css 下载后会马上渲染到页面,渲染和下载同步进行,需要的朋友可以参考下
    2012-11-11
  • javascript动态添加checkbox复选框的方法

    javascript动态添加checkbox复选框的方法

    这篇文章主要介绍了javascript动态添加checkbox复选框的方法的相关资料,需要的朋友可以参考下
    2015-12-12
  • JSON与JavaScript对象关系及语法规则详解

    JSON与JavaScript对象关系及语法规则详解

    这篇文章主要为大家介绍了JSON与JavaScript对象关系及语法规则详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • JavaScript操作元素实例大全

    JavaScript操作元素实例大全

    JavaScript可以对各种网页元素进行操控,下面这篇文章主要给大家介绍了关于JavaScript操作元素的相关资料,文中通过多个实例详细介绍了操作元素的方法,需要的朋友可以参考下
    2021-06-06

最新评论