亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue.js實現一個瀑布流的組件

 更新時間:2023年06月06日 11:59:18   作者:我是好人  
這篇文章主要為大家介紹了vue.js實現一個瀑布流的組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

我所見過的瀑布流都是固定的幾列,然后每一列包含若干個元素(圖文元素),每一列的總高度都差不多。
所以我這個組件的功能就很簡單,可以設置列數量,然后只要再寫一個渲染元素的方法,即可使用。

組件說明

組件名:<tag-autoflow />

參數名類型說明
dataArray數據源
column_sizeNumber列的數量
renderItemFunction目前只能通過render函數渲染子元素,還不支持模板。
有三個參數
h,
item,將被渲染的元素
next,是一個function,在渲染子元素的合適時機(例如img的onload事件里),調用next()即可。
如不調用next將只能渲染一個元素,無法繼續(xù)渲染。

源代碼在此

簡單的使用例子

export default {
    data() {
        // 隨機生成20個測試數據
        const num = 20;
        var list = new Array(num).fill(0).map((v, i) => {
            return this.createItem(i);
        })
        return {
            list,
        }
    },
    // 直接用render函數來寫,因為我覺得這樣寫props更直觀一點
    render(h){
        return h('tag-autoflow', {
            props:{
                // 設置列數量
                column_size:3,
                // 數據源
                data: this.list,
                // 渲染item的方法,參數目前提供三個
                // h 瀑布流組件的createElement方法,非父組件的
                // item 要渲染的元素對象
                // next 必須主動調用next,插件才會自動去渲染下一個元素,詳細說明見下文
                renderItem(h, item, next){
                    // 簡單的渲染一個img跟一個p標簽
                    // 因為img標簽的圖片加載需要時間,而圖片影響了計算所在列的高度
                    // 所以需要在img觸發(fā)了load事件后,再去調用next渲染下一個item。
                    return h('div', [
                        h('img', {
                            attrs: {
                                src: item.img
                            },
                            on: {
                                load: e => {
                                    next();
                                }
                            }
                        }),
                        h('p', item.title)
                    ])
                },
            },
        });
    },
    methods:{
        createItem(i) {
            var title = i + ',' + new Array(_.random(10, 150)).fill('哈').join('');
            var img = `http://via.placeholder.com/${_.random(100, 400)}x${_.random(100, 400)}`;
            return {
                img,
                title,
            }
        },
    }
}

渣渣效果圖

代碼里是一次性生成的20個元素,頁面渲染的時候,很明顯的能看出來是在一個img觸發(fā)了load事件之后才渲染下一個元素。
如果花點心思加一些動畫效果應該很酷吧。

如果你要渲染的item不包含圖片,純文字的話,可以通過這種寫法調用next。保證了計算列高度的準確性。

renderItem(h, item, next){
    this.$nextTick(function(){
        next();
    });
    return h('p', item.title);
},

瀑布流的流程說明

  • 先根據參數生成對應數量的列,
  • 判斷data是否有元素,沒有就結束。
  • 從data里面shift()拿到一個元素item,
  • 找出當前高度最小的一列,將item放入該列。
  • 渲染item,然后調用next()方法進入2

TODO

  • 瀑布流還有個常見的功能就是滾動加載了,目前尚未加入此功能,會盡快加上。
  • 元素加載的過渡動畫

以上就是vue.js實現一個瀑布流的組件的詳細內容,更多關于vue.js瀑布流組件的資料請關注腳本之家其它相關文章!

相關文章

  • vue導入excel文件,vue導入多個sheets的方式

    vue導入excel文件,vue導入多個sheets的方式

    這篇文章主要介紹了vue導入excel文件,vue導入多個sheets的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue.js實現開發(fā)購物車功能的方法詳解

    Vue.js實現開發(fā)購物車功能的方法詳解

    這篇文章主要介紹了Vue.js實現開發(fā)購物車功能的方法,結合實例形式分析了基于vue.js開發(fā)的購物車功能相關操作步驟與實現技巧,需要的朋友可以參考下
    2019-02-02
  • Vue3中的常見組件通信之mitt使用詳解

    Vue3中的常見組件通信之mitt使用詳解

    這篇文章主要介紹了Vue3中的常見組件通信之mitt使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue中實現圖片壓縮 file文件的方法

    vue中實現圖片壓縮 file文件的方法

    這篇文章主要介紹了vue中實現圖片壓縮 file文件的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 基于Vue3實現視頻播放與截圖功能

    基于Vue3實現視頻播放與截圖功能

    這篇文章主要為大家詳細介紹了如何通過Vue3實現簡單的視頻播放與截圖功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-04-04
  • 詳解vue-cli快速構建vue應用并實現webpack打包

    詳解vue-cli快速構建vue應用并實現webpack打包

    這篇文章主要介紹了詳解vue-cli快速構建vue應用并實現webpack打包,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Vue3中實現發(fā)送網絡請求功能(最新推薦)

    Vue3中實現發(fā)送網絡請求功能(最新推薦)

    Axios是一個基于Promise的HTTP客戶端,可以在瀏覽器和Node.js中用于發(fā)送HTTP請求,本文主要介紹在Vue3中實現發(fā)送網絡請求功能,感興趣的朋友一起看看吧
    2023-12-12
  • Vue權限指令控制權限詳解

    Vue權限指令控制權限詳解

    因為項目中需要根據后端返回的權限進行功能的顯示隱藏,所以就加了個權限指令。不用寫if else進行判斷,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-09-09
  • 基于vue封裝下拉刷新上拉加載組件

    基于vue封裝下拉刷新上拉加載組件

    這篇文章主要為大家詳細介紹了基于vue封裝下拉刷新上拉加載組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決vue終端報錯:不是內部或外部命令

    解決vue終端報錯:不是內部或外部命令

    最近學習一下前端框架Vue,整體上感覺還是比較有意思的,但是在安裝vue-cli腳手架的時候,出現了一些問題,解決問題也花費了不少時間,下面這篇文章主要給大家介紹了關于解決vue終端報錯:不是內部或外部命令的相關資料,需要的朋友可以參考下
    2023-02-02

最新評論