使用Vue實現(xiàn)瀑布流的示例代碼
1.每個色塊寬度一致,高度自適應(yīng)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="renderer" content="webkit"> <meta name="viewport" content="user-scalable=0"> <title>Vertical Line</title> <link rel="stylesheet" href="./common/css/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <style> .item-move { transition: all .5s cubic-bezier(.55, 0, .1, 1); -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); } </style> </head> <body> <div id="app"> <waterfall :align="align" :line-gap="200" :min-line-gap="100" :max-line-gap="220" :single-max-width="300" :watch="items" @reflowed="reflowed" ref="waterfall"> <!-- each component is wrapped by a waterfall slot --> <waterfall-slot v-for="(item, index) in items" :width="item.width" :height="item.height" :order="index" :key="item.index" move-class="item-move"> <div class="item" :style="item.style" :index="item.index"></div> </waterfall-slot> </waterfall> </div> <script src="https://cdn.jsdelivr.net/vue/2.2.6/vue.min.js"></script> <script src="http://app.moptym.com/cdn/vue-waterfall/vue-waterfall.min.js"></script> <script src="./common/js/item-factory.js"></script> <script> var app = new Vue({ el: '#app', components: { 'waterfall': Waterfall.waterfall, 'waterfall-slot': Waterfall.waterfallSlot }, data: { align: 'center', items: ItemFactory.get(100), isBusy: false }, methods: { addItems: function () { if (!this.isBusy && this.items.length < 500) { this.isBusy = true this.items.push.apply(this.items, ItemFactory.get(50)) } }, shuffle: function () { this.items.sort(function () { return Math.random() - 0.5 }) }, reflowed: function () { this.isBusy = false } } }) document.body.addEventListener('click', function () { app.shuffle() // app.$refs.waterfall.$emit('reflow') // manually trigger reflow action }, false) window.addEventListener('scroll', function () { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop if (scrollTop + window.innerHeight >= document.body.clientHeight) { app.addItems() } }) </script> </body> </html>
如圖所示:
2.每個色塊高度一致,寬度自適應(yīng)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="renderer" content="webkit"> <meta name="viewport" content="user-scalable=0"> <title>Horizontal Line</title> <link rel="stylesheet" href="./common/css/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <style> .item-move { transition: all .5s cubic-bezier(.55, 0, .1, 1); -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); } </style> </head> <body> <div id="app"> <waterfall :line="line" :line-gap="200" :min-line-gap="180" :max-line-gap="220" :watch="items" @reflowed="reflowed" ref="waterfall"> <!-- each component is wrapped by a waterfall slot --> <waterfall-slot v-for="(item, index) in items" :width="item.width" :height="item.height" :order="index" :key="item.index" move-class="item-move"> <div class="item" :style="item.style" :index="item.index"></div> </waterfall-slot> </waterfall> </div> <script src="https://cdn.jsdelivr.net/vue/2.2.6/vue.min.js"></script> <script src="http://app.moptym.com/cdn/vue-waterfall/vue-waterfall.min.js"></script> <script src="./common/js/item-factory.js"></script> <script> var app = new Vue({ el: '#app', components: { 'waterfall': Waterfall.waterfall, 'waterfall-slot': Waterfall.waterfallSlot }, data: { line: 'h', items: ItemFactory.get(100), isBusy: false }, methods: { addItems: function () { if (!this.isBusy && this.items.length < 500) { this.isBusy = true this.items.push.apply(this.items, ItemFactory.get(50)) } }, shuffle: function () { this.items.sort(function () { return Math.random() - 0.5 }) }, reflowed: function () { this.isBusy = false } } }) document.body.addEventListener('click', function () { app.shuffle() // app.$refs.waterfall.$emit('reflow') // manually trigger reflow action }, false) window.addEventListener('scroll', function () { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop if (scrollTop + window.innerHeight >= document.body.clientHeight) { app.addItems() } }) </script> </body> </html>
如圖所示:
3.寬高不限制,每個色塊順著排
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="renderer" content="webkit"> <meta name="viewport" content="user-scalable=0"> <title>Vertical Line With Grow</title> <link rel="stylesheet" href="./common/css/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <style> .item-move { transition: all .5s cubic-bezier(.55, 0, .1, 1); -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); } </style> </head> <body> <div id="app"> <waterfall :grow="grow" :watch="items" @reflowed="reflowed" ref="waterfall"> <!-- each component is wrapped by a waterfall slot --> <waterfall-slot v-for="(item, index) in items" :width="item.width" :height="item.height" :order="index" :key="item.index" move-class="item-move"> <div class="item" :style="item.style" :index="item.index"></div> </waterfall-slot> </waterfall> </div> <script src="https://cdn.jsdelivr.net/vue/2.2.6/vue.min.js"></script> <script src="http://app.moptym.com/cdn/vue-waterfall/vue-waterfall.min.js"></script> <script src="./common/js/item-factory.js"></script> <script> var app = new Vue({ el: '#app', components: { 'waterfall': Waterfall.waterfall, 'waterfall-slot': Waterfall.waterfallSlot }, data: { grow: [3, 2, 1, 2], items: ItemFactory.get(100), isBusy: false }, methods: { addItems: function () { if (!this.isBusy && this.items.length < 500) { this.isBusy = true this.items.push.apply(this.items, ItemFactory.get(50)) } }, shuffle: function () { this.items.sort(function () { return Math.random() - 0.5 }) }, reflowed: function () { this.isBusy = false } } }) document.body.addEventListener('click', function () { app.shuffle() // app.$refs.waterfall.$emit('reflow') // manually trigger reflow action }, false) window.addEventListener('scroll', function () { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop if (scrollTop + window.innerHeight >= document.body.clientHeight) { app.addItems() } }) </script> </body> </html>
如圖所示:
到此這篇關(guān)于使用Vue實現(xiàn)瀑布流的示例代碼的文章就介紹到這了,更多相關(guān)Vue瀑布流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Element-UI Table組件上添加列拖拽效果實現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Element-UI Table組件上添加列拖拽效果的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04vue3+vite中報錯信息處理方法Error: Module “path“ has&nb
這篇文章主要介紹了vue3+vite中報錯信息處理方法Error: Module “path“ has been externalized for browser compatibility...,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03Vue過濾器,生命周期函數(shù)和vue-resource簡單介紹
這篇文章主要介紹了Vue過濾器,生命周期函數(shù)和vue-resource簡單介紹,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2021-01-01Vue使用xlsx模塊實現(xiàn)讀寫Excel文檔內(nèi)容
在前端項目開發(fā)中,讀寫Excel文件的需求變得越來越常見,本文將詳細(xì)介紹如何在Vue項目中利用FileReader對象和xlsx模塊來讀取Excel文件的內(nèi)容,需要的可以參考下2024-03-03vue中el-table實現(xiàn)可拖拽移動列和動態(tài)排序字段
最近公司需要做個項目,需要拖拽表格和自定義表格字段,本文主要介紹了vue中el-table實現(xiàn)可拖拽移動列和動態(tài)排序字段,具有一定吃參考價值,感興趣的可以了解一下2023-12-12解決VUE mounted 鉤子函數(shù)執(zhí)行時 img 未加載導(dǎo)致頁面布局的問題
這篇文章主要介紹了解決VUE mounted 鉤子函數(shù)執(zhí)行時 img 未加載導(dǎo)致頁面布局的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vue使用element-ui的el-date-picker設(shè)置樣式無效的解決
本文主要介紹了vue使用element-ui的el-date-picker設(shè)置樣式無效的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Vue3中使用vue3-print-nb實現(xiàn)打印功能
這篇文章主要為大家詳細(xì)介紹了Vue3中如何使用vue3-print-nb實現(xiàn)打印功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起參考一下2025-02-02