• 演示图
  • 演示页面
  • React 版本 codesandbox 演示页面
  • 外围思路借鉴自 https://codepen.io/iounini/pe...
  • 根本实现原理参见: 总结实现瀑布流的三种形式

    应用形式

  1. 间接cdn引入

    // 示例代码: https://github.com/hugeorange/waterfalljs/blob/master/src/index.html<script src="https://unpkg.com/browse/waterfalljs-layout@latest/dist/waterfalljs-layout.esm.js"></script><script>    const wf = new Waterfall({        el: '#waterfall',        columnWidth: 236,        gap: 24,        delay: 800,        // 自定义款式按需应用        customStyle: ''    })    // ..................................    // 初始化数据或加载更多场景时时调用     wf.loadMore()
  2. React 版本

    // yarn add waterfalljs-layoutimport Waterfall from "waterfalljs-layout/react";// 具体演示页面请参考 https://codesandbox.io/s/busy-faraday-w538tc<Waterfall    columnWidth={236}    columnCount={2}    gap={24}    customStyle={customStyle}    onChangeUlMaxH={(h) => console.log('ul容器高度-->', h)}  >    {images.map((item, index) => {      return (        <li key={index} >          <div><img src={item} alt="" /></div>        </li>      );    })}  </Waterfall>
  3. 简略粗犷的方法间接拷贝src/index.ts目录下的代码到你的我的项目中应用,vue、react我的项目均可,或是间接 esmodule 导入 import Waterfall from "waterfalljs-layout

API

option

选项含意值类型默认值备注
el容器元素idstring#waterfall容器必须是ul元素
columnWidth每一列的宽度number360
columnCount多少列number-不传会主动调配
gap每列之间的间隙number500
delay轮询排布的间隔时间number#waterfall
customStyle自定义款式string-
onChangeUlMaxH实时获取容器高度(h: number) => void-可在上拉加载场景中应用

rollup 打包遇到的问题

  • 采纳 rollup 多入口打包,别离打出无框架依赖的外围 js 库,和 react 版本的库 - 配置文件详见 rollup.config.js,react 版本本地开发调试配置文件rollup.config.react-dev.js
  • 为了不便 外围 js库 援用及 react 版本没有辨别目录,对立放在 src 根目录下,ts 主动生成 .d.ts 会依据文件名主动生成一个目录(并且会为所有文件生成 .d.ts) 如下图所示
  • package.json 怎么定义导出两个包,参考自 swiper 的定义形式 Node.JS(新)Package.json exports 字段
  • swiper 定义形式
  • TODO: rollup react开发环境无奈加载node_module外面的包