微信小程序瀑布流自定义组件,2种写法

本文介绍了两种在微信小程序中实现瀑布流布局的方法:递归方式和计算图片高度方式。递归方式每次添加内容时进行比较计算,而计算高度方式则一次性预处理所有图片高度。通过示例代码展示了如何在页面和组件中应用这两种方法,确保滚动触底时加载新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码片段:‘https://developers.weixin.qq.com/s/to7eyxmv7Nuv’

第一种:递归方式,每次添加一个内容,就进行比较计算;

第二种:计算图片高度方式,一次性先计算完,然后在显示

注意滚动触底每次加载一页数据不用合并原先的数据。直接传递新加载数据就好
图示:
在这里插入图片描述
在这里插入图片描述

组件代码
wxml:


<scroll-view scroll-y="{
    
    {true}}" lower-threshold="{
    
    {200}}">
  <div class="activity_recommend">
      <div class="recommend_content clearfix">
          <!-- 瀑布流左边和右边 -->
          <view id="pro_l" class="pro_l">
              <view wx:for="{
    
    {productCon_l}}" wx:for-item="item" wx:for-index="ids" wx:key="item">
                    <view  class="recommend_item recom{
    
    {ids}}">
                        <navigator url="/pages/ucenter/myWorks/detail?id={
    
    {item.id}}" open-type="navigate"  hover-class='none'>
                          <image class="item-img" src="{
    
    {item.imgUrl}}" mode="widthFix"></image>
                        </navigator>
                        <block wx:if="{
    
    {isActive}}">
                            <view url="url" class="recommend_shopName">{
  
  {item.title}}</view>
                            <view wx:if="{
    
    {myCollection}}" class="recommend_shopper">
                                <view class="shopper_container">
                                    <image class="shopper_ava" src="{
    
    {item.headlogo}}"></image>
                                    <text class="shopperName">{
  
  {item.nickname}}</text>
                                </view>
                                <view class="loves_box">
                                    <view class='collect_icon'><image data-favoriteid="{
    
    {item.id}}" src="{
    
    {item.isFavorite?oncollect:collect}}" bindtap='collectGoodst'></image></view>
                                </view>
                            </view>
                            <navigator hover-class="none" url="/pages/ucenter/releaseWorks/releaseWorks?id={
    
    {item.id}}" wx:if="{
    
    {myworks}}" class="myworks">
                                <image src="{
    
    {iconedit}}" mode="widthFix"></image>
                                <text>编辑</text>
                            </navigator>
                        </block>
                  </view>
              </view>
          </view>
          <view id="pro_r" class="pro_r">
              <view wx:for="{
    
    {productCon_r}}" wx:for-item="item" wx:for-index="ids" wx:key="item">
                  <view  class="recommend_item recom{
    
    {ids}}">
                        <navigator url="/pages/ucenter/myWorks/detail?id={
    
    {item.id}}" open-type="navigate"  hover-class='none'>
                            <image class="item-img" src="{
    
    {item.imgUrl}}" mode="widthFix"></image>
                        </navigator>
                        <block wx:if="{
    
    {isActive}}">
                            <view url="url" class="recommend_shopName">{
  
  {item.title}}</view>
                            <view wx:if="{
    
    {myCollection}}" class="recommend_shopper">
                                <view class="shopper_container"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值