栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Cocos2d-x

实现瀑布流布局的三种方法

Cocos2d-x 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实现瀑布流布局的三种方法

文章目录
  • 一、 什么是瀑布流布局
    • 1、是什么
    • 2、特点
  • 二、有什么优缺点
    • 1、优点
    • 2、缺点
  • 三、实现方法
    • 法一、【multi-column 多栏布局】
      • 1、两个重要属性
      • 2、特点
      • 3、缺点
      • 4、注意点:
      • 5、实现的代码模式(以下用vue3.0来书写)
    • 法二、【用flex弹性布局+计算元素高度实现布局】
      • 1、原理的分析
      • 2、算法思路:通过上面的分析则能了解瀑布流的思路了
      • 3、代码实现思路
      • 4、代码实现(以下用vue3.0来实现)
    • 法三、【用插件vue-waterfall2 不是很建议使用,一般用于图片的加载,但是复杂的业务就不是很ok了】
      • 1、安装依赖
      • 2、引入
      • 3、相关api
      • 4、代码实现

一、 什么是瀑布流布局

1、是什么
  • 页面上是一种 参差不齐 的多栏布局,类似上图所示随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部,大部分为图片,图片 固定 宽度,高度 不一,根据原比例缩放到宽度达到固定的要求,每行排满后,新的图片添加到后面
2、特点
  • 固定宽度,高度不一
  • 岑参不齐的布局
  • 以图片为主
二、有什么优缺点 1、优点
  • 节省空间:降低页面的复杂
  • 对于 触屏设备非常友好:通过向上滑动浏览,交互方式更符合直觉
  • 良好的视觉体验:浏览时不会被页面整整齐齐的高度影响,参差不齐,降低浏览的疲劳
2、缺点
  • 内容总长度 无法掌握
  • 数据过多时,容易造成页面 加载的负荷
  • 再次加载时 很难定位上一次浏览的内容
三、实现方法 法一、【multi-column 多栏布局】

1、两个重要属性

column-count : 定义列数
column-gap :列与列之间的间隔

2、特点

顺序只能是 从上到下 再左到右

3、缺点

由于排列顺序是先 从上到下 再左到右,只能用于数据固定, 无法动态的加载追加,对于滚动到底部加载新数据则无法实现。

4、注意点:

有时候页面会出现在前几列的最后一个元素的内容被自动断开,一部分在当前列尾,一部分在下一列的列头。这时候子元素可以用 break-inside设置为不被截断 avoid来控制

break-inside: avoid; // 不被截断 默认值是auto,会被截断

5、实现的代码模式(以下用vue3.0来书写)
  • template

  • script

  • style multi-column 实现

法二、【用flex弹性布局+计算元素高度实现布局】 1、原理的分析
  • 适用范围:基本业务都能实现
  • 首先比如有四个元素了,并且设置四列

  • 那么第五个位置在哪里呢

  • 答案: 是下面图的位置上,找到的位置应该高度为所有列中最小的位置

  • 第六个的位置呢,答案还是和上面一样的所示 找到高度为所有列中最小的位置,则为下面的位置
2、算法思路:通过上面的分析则能了解瀑布流的思路了
  • 设计要分成的列数
  • 设置每列的 宽度一致
  • 每次插入的位置选择所有列高度最小 的位置,依次循环
3、代码实现思路
  • 由于需要拿到每个数据的dom元素的实际值,则需要先对数据进行赋值,这样就可以拿到所有的元素dom上的高度
  • 则渲染时候对数据的两次赋值,则会出现一次闪现,需要防抖 ,可以先将卡片设置为visibility:hidden ,当后面对数据处理完,重新渲染后再将卡片设置为visibility:visible
  • 多少列则定义多少新的空数组,然后根据瀑布流的思路依次插入 到空的数组即可,最后再重新渲染页面即可
4、代码实现(以下用vue3.0来实现)

  • template (例子为三列)

  • js





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号