vue-waterfall-easy 2.x

vue-waterfall-easy 2.x

  1. 這是一個(gè)vue組件烁试,包含瀑布流布局和無限滾動(dòng)加載
  2. 相比其他實(shí)現(xiàn)方式,無需在返回的數(shù)據(jù)中指定圖片的寬度和高度
  3. 正是因?yàn)榈?條耳峦,所以采用的是圖片預(yù)加載之后蝶涩,再排版
  4. 響應(yīng)式没讲,兼容移動(dòng)端
  5. 支持無圖模式(@2.4.0)
  6. 使用及其簡單

在線DEMO

Demo案例代碼

更新列表

github

1. 使用

1.1 npm安裝

npm install vue-waterfall-easy --save-dev

1.2 es6語法引用

import vueWaterfallEasy from 'vue-waterfall-easy'

export default {
  name: 'app',
  components: {
    vueWaterfallEasy
  }
}

1.3 js引用

下載vueWaterfallEasy.js

<script src="path/to/vue/vue.js"></script>
<script src="path/to/vueWaterfallEasy.js"></script>
new Vue({
  el: '#app',
  components: {
    vueWaterfallEasy
  }
})

1.4 支持 require.js sea.js 模塊引用

2. 基本示例

html

<vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData"></vue-waterfall-easy>

如果imgArr是替換更新轰驳,getData新請(qǐng)求返回的數(shù)據(jù)覆蓋原來的數(shù)據(jù)厚掷。

如果imgArr是增量更新,getData新請(qǐng)求返回的數(shù)據(jù)與原來的數(shù)據(jù)進(jìn)行合并级解,此時(shí)不建議使用替換更新冒黑,會(huì)浪費(fèi)性能。下面這個(gè)例子就是增量更新勤哗。

js

import vueWaterfallEasy from './vue-waterfall-easy/vue-waterfall-easy.vue'
import axios from 'axios'

export default {
  name: 'app',
  data() {
    return {
      imgsArr: [],
      group: 0, // request param
    }
  },
  components: {
    vueWaterfallEasy
  },
  methods: {
    getData() {
      axios.get('./static/mock/data.json?group=' + this.group) // 真實(shí)環(huán)境中抡爹,后端會(huì)根據(jù)參數(shù)group返回新的圖片數(shù)組,這里我用一個(gè)驚呆json文件模擬
        .then(res => {
          this.imgsArr = this.imgsArr.concat(res.data)
          this.group++
        })
    },
  },
  created() {
    this.getData()
  }
}

詳情見倉庫App.vue文件

3. 組件參數(shù)

參數(shù) 類型 默認(rèn)值 描述
width Number - 容器寬度(px)芒划,默認(rèn)是相對(duì)父元素寬度100%冬竟,由于響應(yīng)式,此時(shí)其所有上級(jí)元素寬度必須都是相對(duì)瀏覽器窗口100%民逼,具體看該表格下面實(shí)例泵殴。
如果為定寬的話,必須設(shè)置width值缴挖,而不能只是其父元素設(shè)置定寬
height Number|String - 容器高度,值為Number類型時(shí)默認(rèn)單位px,值為String類型時(shí)可指定單位
當(dāng)不傳遞height值時(shí)焚辅,默認(rèn)是相對(duì)父元素高度100%映屋,此時(shí)父元素必須具有高度
gap Number 20 單位:px
pc端圖片之間的間距
mobileGap Number 8 單位:px
移動(dòng)端圖片之間的間距
imgsArr Array [] 必填
用于渲染瀑布流的數(shù)據(jù)
每個(gè)數(shù)組元素是個(gè)對(duì)象,應(yīng)該要有src和href屬性
src屬性代表圖片的src屬性
href屬性代表點(diǎn)擊跳轉(zhuǎn)的鏈接
如果你的鍵值不是srchref同蜻,你可以使用srcKeyhrefKey這兩個(gè)屬性進(jìn)行鍵值裝換
srcKey String 'src' 當(dāng)你的圖片地址鍵值不為src棚点,可以使用該屬性進(jìn)行轉(zhuǎn)換
hrefKey String 'href' 當(dāng)你的圖片地址鍵值不為href,可以使用該屬性進(jìn)行轉(zhuǎn)換
imgWidth Number 240 單位:px
圖片的寬度
maxCols Number 5 瀑布流顯示最大的列數(shù)
linkRange String 'card' 標(biāo)識(shí)點(diǎn)擊觸發(fā)跳轉(zhuǎn)鏈接范圍湾蔓,值有:
'card' 整張卡牌范圍跳轉(zhuǎn)鏈接
'img' 卡片內(nèi)圖片范圍
custom 自定義可以通過slot插槽自定義跳轉(zhuǎn)鏈接元素
isRouterLink Boolean false 值為false時(shí)渲染a標(biāo)簽瘫析,值為true時(shí)渲染router-link組件
reachBottomDistance Number 0 單位:px
滾動(dòng)觸發(fā)scrollReachBottom事件時(shí)的距離容器底部的距離
loadingDotCount Number 3 默認(rèn)loading動(dòng)畫點(diǎn)的數(shù)量
loadingDotStyle Object null 默認(rèn)loading動(dòng)畫內(nèi)小圓點(diǎn)的樣式對(duì)象,可以自定義其樣式
loadingTimeOut Number 500 單位:ms
預(yù)加載事件小于500毫秒就不顯示加載動(dòng)畫,增加用戶體驗(yàn)
cardAnimationClass String 'default-card-animation' 用于給圖片設(shè)置出現(xiàn)時(shí)的動(dòng)畫的calssName贬循,如要去掉默認(rèn)動(dòng)畫可以這樣設(shè)置cardAnimationClass=""
enablePullDownEvent Boolean false 開啟下拉事件

waterfall組件祖先元素css樣式

詳情見 App.vue 文件

html,
body,
#app {
  height: 100%; // 父元素必須要有高度
  width: 100%; // 如果已經(jīng)是block元素咸包,則可以忽略
}

4. 事件

事件名 描述
scrollReachBottom 滾動(dòng)條滾動(dòng)到底部時(shí),用于請(qǐng)求新的圖片數(shù)據(jù)
preloaded 每次圖片預(yù)加載完成執(zhí)行
click 當(dāng)卡片被點(diǎn)擊時(shí)觸發(fā),看下面的實(shí)例
imgError 圖片加載錯(cuò)誤事件杖虾,第一個(gè)參數(shù)可獲取到當(dāng)前加載錯(cuò)誤圖片的相關(guān)數(shù)據(jù)
pullDownMove 移動(dòng)端生效烂瘫,觸摸下拉事件,第一個(gè)參數(shù)可獲取Y軸移動(dòng)距離差奇适,常用于下拉刷新
pullDownEnd 移動(dòng)端生效坟比,觸摸下拉事件手指抬起,常用于下拉刷新

click事件使用實(shí)例

<vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData" @click="clickFn"></vue-waterfall-easy>
  clickFn(event, { index, value }) {
    // 阻止a標(biāo)簽跳轉(zhuǎn)
    event.preventDefault()
    // 只有當(dāng)點(diǎn)擊到圖片時(shí)才進(jìn)行操作
    if (event.target.tagName.toLowerCase() == 'img') {
      console.log('img clicked',index, value)
    }
  }

5. 組件方法

5.1 waterfallOver

當(dāng)滾動(dòng)加載數(shù)據(jù)結(jié)束時(shí)嚷往,手動(dòng)調(diào)用葛账,將會(huì)取消滾動(dòng)加載

this.$refs.waterfall.waterfallOver()

詳情見倉庫App.vue文件

6. slot插槽

6.1 默認(rèn)slot

進(jìn)行自定義圖片的描述信息

參數(shù)說明

參數(shù) 描述
props.index 圖片在數(shù)組中的索引,從0開始
props.value 遍歷參數(shù)imgsArr的元素值
<vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData">
  <div class="img-info" slot-scope="props">
    <p class="some-info">第{{props.index+1}}張圖片</p>
    <p class="some-info">{{props.value.info}}</p>
  </div>
</vue-waterfall-easy>

6.2 slot="loading"

自定義加載動(dòng)畫

<div slot="loading" slot-scope="{isFirstLoad}">
  <div slot="loading" v-if="isFirstLoad">first-loading...</div>
  <div v-else="v-else">loading...</div>
</div>

6.3 slot="waterfall-head"

容器頭部內(nèi)容插槽

<vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData">
  <div slot="waterfall-head">waterfall-head</div>
</vue-waterfall-easy>

6.4 slot="waterfall-over"

調(diào)用waterfallOver方法后才會(huì)顯示皮仁,用于瀑布流結(jié)束提醒籍琳,默認(rèn)值是被你看光了

<vue-waterfall-easy :imgsArr="imgsArr" @scrollReachBottom="getData">
  <div slot="waterfall-over">waterfall-over</div>
</vue-waterfall-easy>

7. 兼容移動(dòng)端

別忘記在index.html head中添加一下代碼

<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市魂贬,隨后出現(xiàn)的幾起案子巩割,更是在濱河造成了極大的恐慌,老刑警劉巖付燥,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣谈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡键科,警方通過查閱死者的電腦和手機(jī)闻丑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋颖,“玉大人嗦嗡,你說我怎么就攤上這事》沽幔” “怎么了侥祭?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長茄厘。 經(jīng)常有香客問我矮冬,道長,這世上最難降的妖魔是什么次哈? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任胎署,我火速辦了婚禮,結(jié)果婚禮上窑滞,老公的妹妹穿的比我還像新娘琼牧。我一直安慰自己恢筝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布巨坊。 她就那樣靜靜地躺著撬槽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抱究。 梳的紋絲不亂的頭發(fā)上恢氯,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音鼓寺,去河邊找鬼勋拟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妈候,可吹牛的內(nèi)容都是我干的敢靡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼苦银,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼啸胧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幔虏,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤纺念,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后想括,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陷谱,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年瑟蜈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烟逊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铺根,死狀恐怖宪躯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情位迂,我是刑警寧澤访雪,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站掂林,受9級(jí)特大地震影響臣缀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜党饮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一肝陪、第九天 我趴在偏房一處隱蔽的房頂上張望驳庭。 院中可真熱鬧刑顺,春花似錦氯窍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柒竞,卻和暖如春政供,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朽基。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工布隔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稼虎。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓衅檀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親霎俩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哀军,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Vue-Music 一| 前期工作 1.項(xiàng)目初始化 npm install -g vue-cli vue init...
    noobakong閱讀 1,820評(píng)論 0 5
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容打却。關(guān)于...
    云之外閱讀 5,045評(píng)論 0 29
  • 聚會(huì)同學(xué)杉适,從未推卻,即便刮風(fēng)下雪柳击。 時(shí)光未老鬢發(fā)白猿推,偶爾相逢人雀躍。 歡天喜地腻暮,興高采烈彤守,友誼長存勿缺。 容顏易老...
    高原_4697閱讀 236評(píng)論 2 4
  • 上帝天生的給了我們一條平均線哭靖,關(guān)于你是牛是馬具垫,出生后是定下來來的。對(duì)于抵抗壓力值试幽,也是確定的筝蚕,我們?nèi)绻麤]有借助外部...
    黑八先生閱讀 275評(píng)論 0 3
  • 掌門_艾老師閱讀 193評(píng)論 0 0