vue-waterfall2
waterfall adaptive plugin for vue and support lazy load , very easy!
23,328
| Install | |
|---|---|
npm install vue-waterfall2@2.0.7 |
|
| Latest Version: | 2.0.7 |
| Vue: | 3 |
| Older releases: | 2 |
| License: | MIT |
| Last Updated: | Jun 19, 2024 |
| Links: | npm |
Maintainer: rise-devin
中文版文档
Note: vue-waterfall2@2.x is adapt for vue3, if your app is vue2, please use vue-waterfall2@1.10.x, 1.10.x document
vue-waterfall2
- auto adaption for width and height
- High degree of customization
- Swipe to the bottom to trigger on pc/android, pull up to trigger on ios
- Support lazy load(attribute with
lazy-src) - Easy to use, for PC/ios/android

If you have some questions,welcome to describe issues、suggestions;Thank you for your Star !
Welcome to my blog !!!
Demo
Common Demo
Lazyload Demo
Code Demo
npm i
npm run dev
Installation
npm i vue-waterfall2@latest --save
Props
| Name | Default | Type | Desc |
|---|---|---|---|
| height | null | Number | height of container |
| col | 2 | Number | The number of column |
| width | null | Number | The width of each column |
| gutterWidth | 10 | Number | The value of margin |
| data | [] | Array | data |
| isTransition | true | Boolean | load image with transition |
| lazyDistance | 300 | Number | The distance of image lazy loading |
| loadDistance | 300 | Number | The distance of loadmore |
Lazy Load
For images that need to be loaded lazily, the 'lazy-src' attribute needs to be used
<waterfall :col='col' :data="data" >
<img v-if="item.img" :lazy-src="item.img" alt="load error" />
</waterfall>
Events
| Name | Data | Desc |
|---|---|---|
| loadmore | - | Scroll to the bottom to trigger on PC / pull up to trigger on Mobile |
| scroll | obj | Scroll to trigger and get the infomation of scroll |
| finish | - | finish render |
$waterfall API
this.$waterfall.forceUpdate() //forceUpdate
Usage
Notes:
- when using
remto layout, calculate the width after adaptation before passing the value. - Use the parent component of 'waterfall' if there is a problem with the style, remove CSS
scopedand try it
main.js
import { createApp } from "vue";
import waterfall from 'vue-waterfall2'
const app = createApp(App)
app.use(waterfall)
app.vue
<template>
<div class="container-water-fall">
<div><button @click="loadmore">loadmore</button> <button @click="mix">mix</button> <button @click="switchCol('5')">5列</button> <button @click="switchCol('8')">8列</button> <button @click="switchCol('10')">10列</button> </div>
<waterfall :col='col' :width="itemWidth" :gutterWidth="gutterWidth" :data="data" @loadmore="loadmore" @scroll="scroll" >
<div class="cell-item" v-for="(item,index) in data">
<div class="item-body">
<div class="item-desc">{{item.title}}</div>
<div class="item-footer">
<div class="avatar" :style="{backgroundImage : `url(${item.avatar})` }"></div>
<div class="name">{{item.user}}</div>
<div class="like" :class="item.liked?'active':''" >
<i ></i>
<div class="like-total">{{item.liked}}</div>
</div>
</div>
</div>
</div>
</waterfall>
</div>
</template>
/*
notes:
1. when using `rem` to layout, calculate the width after adaptation before passing the value.
2. Use the parent component of 'waterfall' if there is a problem with the style, remove CSS 'scoped' and try it
*/
import Vue from 'vue'
export default{
data(){
return{
data:[],
col:5,
}
},
computed:{
itemWidth(){
return (138*0.5*(document.documentElement.clientWidth/375)) #rem to layout, Calculate the value of width
},
gutterWidth(){
return (9*0.5*(document.documentElement.clientWidth/375)) #rem to layout, Calculate the value of margin
}
},
methods:{
scroll(scrollData){
console.log(scrollData)
},
switchCol(col){
this.col = col
console.log(this.col)
},
loadmore(index){
this.data = this.data.concat(this.data)
}
}
}
Related Packages
vue-flex-waterfall
A horizontal sorting waterfall layout component for Vue.js, realized by flex lay...
16,277
61
Version History
| Version | Released | License |
|---|---|---|
| 2.0.7 | MIT | |
| 2.0.6 | MIT | |
| 2.0.5 | MIT | |
| 2.0.4 | MIT | |
| 2.0.3 | MIT | |
| 2.0.2 | MIT | |
| 2.0.1 | MIT | |
| 2.0.0 | MIT | |
| 1.10.9 | MIT | |
| 1.10.7 | MIT | |
| 1.10.6 | MIT | |
| 1.10.5 | MIT | |
| 1.10.4 | MIT | |
| 1.10.3 | MIT | |
| 1.10.2 | MIT | |
| 1.10.1 | MIT | |
| 1.9.6 | MIT | |
| 1.9.5 | MIT | |
| 1.9.4 | MIT | |
| 1.9.3 | MIT | |
| 1.9.2 | MIT | |
| 1.9.1 | MIT | |
| 1.8.22 | MIT | |
| 1.8.21 | MIT | |
| 1.8.20 | MIT | |
| 1.8.19 | MIT | |
| 1.8.18 | MIT | |
| 1.8.17 | MIT | |
| 1.8.16 | MIT | |
| 1.8.14 | MIT |
Showing the latest 30 of 85. See every release on npm
Pre-releases (2)
| Version | Released | License |
|---|---|---|
| 2.0.0-beta.1 | MIT | |
| 1.10.7-beta.1 | MIT |