vue.js組件vue-waterfall-easy實(shí)現(xiàn)瀑布流效果
想必大家應(yīng)該很多都已經(jīng)習(xí)慣了jquery的DOM操作,jquery的瀑布流實(shí)現(xiàn)起來(lái)也很容易。
但是,隨著時(shí)代的發(fā)展,隨著時(shí)代的進(jìn)步.....
算了算了,扯遠(yuǎn)了,既然能找到這兒來(lái),肯定是在vue.js上已經(jīng)有一定的基礎(chǔ)了,咱們廢話(huà)不多說(shuō),直接進(jìn)入主題。
vue-waterfall-easy
easy! easy! easy! 重要的事情說(shuō)三遍!?。?/p>
所以說(shuō),咱們今天用到的不是大家熟知的vue-waterfall,而是vue-waterfall-easy;
一、獲取vue-waterfall-easy組件
這里有兩種方式:
第一種就是直接從git上復(fù)制vue-waterfall-easy組件的完整代碼,粘貼為自己本地項(xiàng)目的組件(源碼鏈接:vue-waterfall-easy),打開(kāi)鏈接,進(jìn)入src/components/vue-waterfall-easy.vue,直接復(fù)制所有代碼即可。
第二種是通過(guò)npm進(jìn)行全局安裝,直接用命令行在你的項(xiàng)目目錄下執(zhí)行:npm install vue-waterfall-easy --save-dev
執(zhí)行成功后,在node_modules目錄下會(huì)出現(xiàn)一個(gè)vue-waterfall-easy的目錄(其實(shí)就是整個(gè)demo的實(shí)例源碼)
二、局部引用vue-waterfall-easy組件
如果是直接復(fù)制的組件源碼作為本地組件,那就直接與普通組件一樣引入就可以了:
import vueWaterfallEasy from '你的路徑/組件名.vue'
如果是通過(guò)npm安裝的組件,那就更簡(jiǎn)單了:
import vueWaterfallEasy from 'vue-waterfall-easy'
直接這樣就可以調(diào)用到node_modules目錄下打包好的vue-waterfall-easy組件了;
當(dāng)然,引入組件之后一定不要忘記在當(dāng)前組件中注冊(cè)該組件哦:
export default { components: { vueWaterfallEasy } }
三、定義需要用到的變量及方法
data () { return { imgsArr: [], //存放所有已加載圖片的數(shù)組(即當(dāng)前頁(yè)面會(huì)加載的所有圖片) fetchImgsArr: [] //存放每次滾動(dòng)時(shí)下一批要加載的圖片的數(shù)組 } }, methods: { initImgsArr (n, m) { //初始化圖片數(shù)組的方法,把要加載的圖片裝入 var arr = [] for (var i = n; i < m; i++) { arr.push({ src: `static/img/${i + 1}.jpg`, link: '', info: '一些圖片描述文字' }) //src為加載的圖片的地址、link為超鏈接的鏈接地址、 //info為自定義的圖片展示信息,請(qǐng)根據(jù)自己的情況自行填寫(xiě) } return arr }, fetchImgsData () { //獲取新的圖片數(shù)據(jù)的方法,用于頁(yè)面滾動(dòng)滿(mǎn)足條件時(shí)調(diào)用 this.imgsArr = this.imgsArr.concat(this.fetchImgsArr) //數(shù)組拼接,把下一批要加載的圖片放入所有圖片的數(shù)組中 } }, created () { this.imgsArr = this.initImgsArr(0, 10) //初始化第一次(即頁(yè)面加載完畢時(shí))要加載的圖片數(shù)據(jù) this.fetchImgsArr = this.initImgsArr(10, 20) // 模擬每次請(qǐng)求的下一批新的圖片的數(shù)據(jù)數(shù)據(jù) }
四、模版中調(diào)用組件
<vue-waterfall-easy :imgsArr="imgsArr" @scrollLoadImg="fetchImgsData"></vue-waterfall-easy>
想必大家都能看懂,這里不再贅述。如果你只是需要一個(gè)滾動(dòng)無(wú)限加載的瀑布流圖片展示,到這一步就已經(jīng)能滿(mǎn)足需求了。當(dāng)然,看過(guò)我發(fā)的源碼鏈接里的源碼的小伙伴會(huì)發(fā)現(xiàn)源碼中的App.vue模版中是這樣引用的:
<template lang="pug"> //不要忽略這個(gè)語(yǔ)言屬性哦 #app h1.title vue-waterfall-easy demo vue-waterfall-easy(:imgsArr="imgsArr",@scrollLoadImg="fetchImgsData") template( scope="props") p.some-info 第{{props.index+1}}張圖片 p.some-info {{props.value.info}} </template> </template>
有了解過(guò)的小伙伴應(yīng)該能看出來(lái)這里應(yīng)用的是pug(也就是大名鼎鼎的jade,后來(lái)因?yàn)樯虡?biāo)的原因改名為pug)的語(yǔ)法,至于為什么這樣寫(xiě),可以參見(jiàn)vue-waterfall-easy.vue源碼的第81~90行以及github上(上面我給的鏈接就是)文檔的參數(shù)說(shuō)明:
a.img-box( v-for="(v,i) in imgsArrC", :href="v.link", :style="{padding:gap/2+'px',width: isMobile ? '' : colWidth+'px'}" ) .img-inner-box div.img-wraper(:style="{width:imgWidthC+'px',height:v.height?v.height+'px':''}") img(:src="v.src") .img-info slot(:index="i",:value="v")
注:報(bào)pug錯(cuò)誤的小伙伴請(qǐng)自行百度下載pug依賴(lài)庫(kù)
參數(shù)說(shuō)明
五、運(yùn)行項(xiàng)目
如果以上步驟沒(méi)有出現(xiàn)問(wèn)題的話(huà),那么恭喜你,你已經(jīng)可以看到自己的瀑布流了。當(dāng)然,我們可以從文檔中看到,我們還可以進(jìn)行一些其他的配置:
組件參數(shù)
props: { gap: { // 圖片間隔 type: Number, default: 20 }, maxCols: { // 最大的列數(shù) type: Number, default: 5 }, imgsArr: { // 請(qǐng)求返回的圖片數(shù)據(jù),格式:[{src:'1.jpg','link':'url1' info:'自定義圖片信息'},{src:'2.jpg','link':'url2',info:'自定義圖片信息'}...] type: Array, required: true }, imgWidth: { // 指定圖片的統(tǒng)一寬度 type: Number, default: 240 }, timeOut: { // 預(yù)加載事件小于500毫秒就不顯示加載動(dòng)畫(huà),增加用戶(hù)體驗(yàn) type: Number, default: 500 } }
按照需求自行配置就可以了。
OK,到此,我們已經(jīng)按照文檔成功的“構(gòu)建”了我們自己瀑布流組件了。當(dāng)然,實(shí)際項(xiàng)目中我們的需求很可能不只是這樣,我們還要自己做一些完善,這里我就不再多說(shuō),相信經(jīng)過(guò)以上的講解,大家已經(jīng)對(duì)vue-waterfall-easy的套路有所了解,可以自己解決如何滿(mǎn)足項(xiàng)目需求的問(wèn)題了。如果有什么不懂或者不知道如何完善以滿(mǎn)足需求,可以在評(píng)論中留下你的問(wèn)題或者需求,我會(huì)很樂(lè)意幫助你的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何根據(jù)網(wǎng)站路由判斷頁(yè)面主題色詳解
這篇文章主要給大家介紹了關(guān)于vue如何根據(jù)網(wǎng)站路由判斷頁(yè)面主題色的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11vue路由警告:Duplicate named routes definition問(wèn)題
這篇文章主要介紹了vue路由警告:Duplicate named routes definition問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09公共組件父子依賴(lài)調(diào)用及子校驗(yàn)父條件問(wèn)題解決
這篇文章主要介紹了如何解決公共組件父子組件依賴(lài)調(diào)用和子組件校驗(yàn)父組件條件的問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Vue數(shù)據(jù)增刪改查與表單驗(yàn)證的實(shí)現(xiàn)流程介紹
這篇文章主要介紹了Vue數(shù)據(jù)增刪改查與表單驗(yàn)證的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-10-10Vue.js計(jì)算屬性computed與watch(5)
這篇文章主要為大家詳細(xì)介紹了Vue.js計(jì)算屬性computed與watch,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12詳解基于element的區(qū)間選擇組件校驗(yàn)(交易金額)
這篇文章主要介紹了詳解基于element的區(qū)間選擇組件校驗(yàn)(交易金額),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01vue.js 2.0實(shí)現(xiàn)簡(jiǎn)單分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了vue.js 2.0實(shí)現(xiàn)簡(jiǎn)單分頁(yè)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07element的el-form和el-table嵌套使用實(shí)現(xiàn)
本文主要介紹了element的el-form和el-table嵌套使用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08