小程序使用css3实现瀑布流布局

@[TOC]小程序使用css3实现瀑布流布局

小程序+css3实现简单瀑布流布局

图片:从百度图片保存,上传到小程序云开发存储,并添加到云数据库字段,过程简单但复制粘贴稍微麻烦
实现:CSS3的column属性

1.在小程序中新建component
wxml

<view class="water-flow">
  <view class="myflow-item  {{index%2==0 ? 'flow-item-even' : 'flow-item-odd'}}" wx:for="{{flowlist}}" wx:key="index"> 
  <view class="myflow-item-box">
    <view class="imgbox">
      <image src="{{item.url}}" mode="widthFix" class="foodimg" ></image>
    </view>
    <view class="dec">{{item.des}}</view>   <!--每个卡片的描述文字-->
      </view>
    <view class="del-blank"></view>       <!--为了解决每个卡片设置margin-top/bottom后两列顶部不对齐的情况添加个跟底色相同的div假装间隔-->
  </view>
</view>

数据库字段
数据可字段
JS
我的是组件,不是Page哦

const db = wx.cloud.database();         //获取默认环境的云数据库
// const todos = db.collection('images');         //获取数据库某个集合的引用
const imageData = db.collection('images').doc('flowlist');    //获取该集合上的指定ID的记录
Component({
  data: {
  flowlist:[],
  },
  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
      let that=this;
      获取数据库中的图片
      imageData.get({
        success: function(res) {
          // res.data 包含该记录的数据
          var list=res.data.imglist;
          that.setData({
            flowlist:list
          })
        }
      })
    }
  }
})

CSS样式

.water-flow{
  width: 100%;
  height: auto;
  padding: 10rpx 30rpx;
  column-count: 2;    /*将这个div分成两列*/
  column-gap:20rpx;        /*列间距为10px=20rpx*/
  box-sizing: border-box;        /*设置padding时包含边框*/
  background: #eee;
  margin-top: 10rpx;
}
.myflow-item{
  break-inside:avoid;             /* 设置该属性会防止第一列的最后一个div会跨列,并且断裂*/
  height: auto;
  border-radius: 15rpx;
  overflow: hidden;
}
.imgbox{
  width: 100%;
}
.imgbox .foodimg{
  width: 100%;
}
.myflow-item-box{
  border-radius: 15rpx;
  background: #fff;
  border: 1px solid #ccc;
}
.dec{
  padding: 5rpx;
  font-size: 14px;
  color: #191970;
  padding-left: 30rpx;
  overflow: hidden;
  display: inner-block;
  margin-bottom: 20rpx;
}
.del-blank{
  height: 5rpx;		  /* 设置一个假装的间隔,因为margin-top/bottom之间的间隔并不能被防止断裂,*/
  margin-top: 10rpx; /* 可以给他设置margin,或者直接设置它的高度为15rpx,不要margin也可以*/
  background-color: #eee; /* 页面的背景色为#eee,所以设置它的颜色也为eee,成为一条优秀的变色龙*/
}

小程序效果图
在这里插入图片描述
在这里插入图片描述
手机截屏
在这里插入图片描述
在这里插入图片描述
解决问题的方式不止有一种,我也是第一次尝试,希望各位大佬如果有发现哪里不足或者有问题,欢迎提出并指正,谢谢各位看官~~❤

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值