# maramlee-waterfalls-flow
**Repository Path**: blade2014/maramlee-waterfalls-flow
## Basic Information
- **Project Name**: maramlee-waterfalls-flow
- **Description**: No description available
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-12-19
- **Last Updated**: 2024-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# maramlee-waterfalls-flow 使用
## 前言
**注意:期待已久的 maramlee-waterfalls-flow-nav 插件更新啦,如果需要 nav 切换的样式,请移步 [maramlee-waterfalls-flow-nav](https://ext.dcloud.net.cn/plugin?id=3596) 获取插件。**
waterfalls-flow 是一个瀑布流插件,简单易用。
前段时间做项目中需要使用到瀑布流,但找了一圈,都没有找到合适的瀑布流插件,很多都是直接通过标签分列,治标不治本。
所以自己动手写了这个插件,可以配置多列(默认 2 列,最少 2 列,除非故意太多列影响渲染,按理讲最多可以无限多)。适用于 h5 端、app 端、微信小程序端,这几个端是经过我反复测试再发布,并使用在项目中,一般没啥 bug,但其他端没测试,可以自行测试,有什么问题留言给我。
此瀑布流可为纯图片瀑布流,也可在图片下方自定义其他内容,内容高度是自适应的,可以随意添加、布局内容。
利用 vue 的特性避免重复渲染,每次加载数据除非本身 http 请求时间长影响外,每次渲染只有新增的数据渲染,已经渲染的数据不会重复再次渲染影响性能。所以,不会因为数据加载越来越多而渲染越来越慢。
我自己的项目是用 ts 写的,不知道有没有需要 ts 版本的,我觉得可能用 ts 占少数,如果需要的话,也可以联系我。
## 使用方式
### 在 `script` 中引用组件
```javascript
import waterfallsFlow from "@/components/maramlee-waterfalls-flow/maramlee-waterfalls-flow.vue";
export default {
components: { waterfallsFlow },
};
```
### 在 `template` 中使用组件
#### 可以只是渲染图片,不需要其他
```vue
```
#### 有插槽(自定义内容)的情况要分情况使用
##### 若只适配 app、h5 端,利用作用域插槽
注意:`item` 包含 `list` 对应的数据项,可以随意搭配、自定义使用。
```vue
```
##### 若只适配微信小程序,利用小程序插槽
注意:微信小程序没有动态模板,也和 vue 的插槽使用方式不一样
```vue
```
##### 若需要同时兼容 app、h5、微信小程序,则需条件渲染
```vue
```
## 属性说明
| 属性名 | 类型 | 默认值 | 是否必传 | 说明 | 平台支持 |
| ----------- | ------- | --------- | -------- | ---------------------------------------- | ---------------- |
| list | Array | - | 是 | 渲染的列表 | 全 |
| offset | Number | 10 | 否 | 单位是 px | 全 |
| idKey | String | id | 否 | 列表渲染的 key 的键名,值必须唯一 | 全 |
| imageSrcKey | String | image_url | 否 | 图片 src 的键名 | 全 |
| cols | Number | 2 | 否 | 列数,值必须不小于 2 | 全 |
| single | Boolean | false | 否 | 是否是单独的渲染图片,只控制图片圆角而已 | 全 |
| listStyle | Object | - | 否 | 单个展示项的样式 | 微信小程序不支持 |
| imageStyle | Object | - | 否 | 图片的样式 | 全 |
## 事件说明
| 事件名 | 说明 | 返回值 |
| ------------ | ---------------- | ------------ |
| @wapper-lick | 单项点击事件 | 单项对应数据 |
| @image-click | 图片点击事件 | 单项对应数据 |
| @image-load | 图片渲染完成触发 | - |
## 组件方法
| 方法名 | 说明 | 参数 | 使用场景 |
| ------- | -------------------- | ---- | -------------- |
| refresh | 刷新数据,数据初始化 | - | 页面下拉刷新等 |
### refresh 使用示例
使用部分代码样例
```vue
```
## 提示
如果你看到了这里,还有以下情况:
1. 插件使用方法有不懂的地方;
2. 插件本身研究不明白的地方;
3. 觉得插件有待提高的建议;
4. 或者其他你遇到的问题;
5. 纯粹想前端技术交流也行。
可以加我微信,微信号:`ml-maramlee`,备注以`maramlee-${姓名}-${1}`的形式,其中 1、2、3、4 对应前面的情况(前端都看得懂哈),例如:`maramlee-maram-1`。
**注:人家是有脾气的,不这样备注不给加哟~**
**再注:觉得好用记得收藏、评论,这样可以让更多人看到,让更多人受益。当然,解答不易,欢迎赞赏**
**申明:主要是看到评论里有或多或少的问题,加微信有助于解决问题,只接受技术交流,其他请勿扰。**
## 使用样例
pages/index/index.vue
```vue
{{ item.title }}
{{ item.text }}
{{ item.title }}
{{ item.text }}
```