vue實(shí)現(xiàn)簡(jiǎn)單瀑布流布局
vue簡(jiǎn)單實(shí)現(xiàn)瀑布流布局的一種方式(vue瀑布流組件),供大家參考,具體內(nèi)容如下
vue中的瀑布流布局組件
需求:圖片容器寬度固定,高度根據(jù)圖片自適應(yīng),圖片一行不能排列時(shí)候,換行依次從左往右排列。(瀑布流概念)
另外結(jié)合vue-lazy實(shí)現(xiàn)懶加載 ( npm i vue-lazyload --save-dev)
使用也很簡(jiǎn)單,在需要懶加載的img標(biāo)簽上將:src換成v-lazy
父組件傳遞數(shù)據(jù):
waterfallData:[ { e_img: "test.jpg", // 圖片 e_intro: "描述信息", u_img: "test.jpeg", // 標(biāo)記圖 u_name: "開(kāi)發(fā)者"}, { e_img: "test.jpg", e_intro: "描述信息", u_img: "test.jpeg", u_name: "開(kāi)發(fā)者"} ]
定寬不定高瀑布流布局子組件
<template> <div> <div class="waterfall px-container clearfix" v-cloak> <ul class="px-waterfall left" v-for="(el,i) in newWaterfallData" :key="i"> <li v-for="(item,index) in el" :key="index"> <div style="position: relative;" > <router-link to="/goodsdetail/1"> <img v-lazy="item.e_img" class="bg-img" alt="" v-loading="true"> </router-link> <div class="px-hot-tag" v-if="item.u_img"> <img :src="item.u_img" alt="" > </div> <h3 class="font22 color-fff fh" v-if="item.e_intro"> {{item.e_intro}}</h3> </div> </li> </ul> </div> </div> </template> <script> export default { data() { return { newWaterfallData: '', waterfallDataNumber:'' } }, created() { let [ ...waterfallData ] = this.waterfallData let [ ...newWaterfallData ]= [[],[],[]] waterfallData.forEach((el,i) => { switch( i%3 ) { case 0 : newWaterfallData[0].push(el) break case 1: newWaterfallData[1].push(el) break case 2: newWaterfallData[2].push(el) break } }); this.newWaterfallData = newWaterfallData }, props: [ 'waterfallData' ] } </script> <style lang="scss"> .px-container { width: 100%; max-width: 1200px; margin: 0 auto; } .clearfix:before, .clearfix:after { content: ""; display: block; clear: both; } .clearfix { zoom: 1; } .left { float: left; } . font22{ font-size:22px; } .color-fff { color:#fff; } .fh { overflow:hidden; } [v-cloak]{ display: none!important; } .waterfall { margin-top: 20px; } .px-waterfall { width: calc(380px); &:nth-child(3n+2) { margin: 0 30px; } img.bg-img { border-radius: 8px; } h3 { text-overflow:ellipsis; white-space: nowrap; text-overflow: ellipsis; height:30px; font-family:PingFangSC-Semibold; font-weight:600; line-height:30px; letter-spacing:6px; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); z-index: 999; } li{ background: #fff; border-radius: 8px; margin-bottom: 20px; } } .px-hot-tag { position: absolute; top: 0; border-radius: 8px; width: 71px; height: 30px; img { border-radius: 8px 0 8px 0; } } .photo{ position: relative; height: 25px; .keywordbox { position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); height: 25px; } } .keyword { height: 25px; line-height: 25px; padding: 0 22px; text-align: center; .color-666-line { border-bottom:2px solid #666666; } .red-line { border-bottom:2px solid #F65050; } } </style>
如有問(wèn)題,歡迎指正,如您有好的方案,敬請(qǐng)與我分享!
更多文章可以點(diǎn)擊《Vue.js前端組件學(xué)習(xí)教程》學(xué)習(xí)閱讀。
關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專(zhuān)題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請(qǐng)閱讀專(zhuān)題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3?計(jì)算屬性computed的實(shí)現(xiàn)原理
這篇文章主要介紹了Vue3?計(jì)算屬性computed的實(shí)現(xiàn)原理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08Vue3?響應(yīng)式系統(tǒng)實(shí)現(xiàn)?computed
這篇文章主要介紹了?Vue3?響應(yīng)式系統(tǒng)實(shí)現(xiàn)?computed,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下2022-06-06vue側(cè)邊欄動(dòng)態(tài)生成下級(jí)菜單的方法
今天小編就為大家分享一篇vue側(cè)邊欄動(dòng)態(tài)生成下級(jí)菜單的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue動(dòng)態(tài)樣式幾種常用方法總結(jié)
這篇文章主要給大家介紹了關(guān)于Vue動(dòng)態(tài)樣式幾種常用方法總結(jié)的相關(guān)資料,在我們的前端界面中,很多的地方的樣式都是不確定的狀態(tài),要根據(jù)其他內(nèi)容的變化而變化樣式的,需要的朋友可以參考下2023-08-08vue2.0開(kāi)發(fā)入門(mén)筆記之.vue文件的生成和使用
本篇文章主要介紹了vue2.0開(kāi)發(fā)入門(mén)筆記之.vue文件的生成和使用 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09vue?頁(yè)面卡死,點(diǎn)擊無(wú)反應(yīng)的問(wèn)題及解決
這篇文章主要介紹了vue?頁(yè)面卡死,點(diǎn)擊無(wú)反應(yīng)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue實(shí)現(xiàn)仿淘寶結(jié)賬頁(yè)面實(shí)例代碼
本文是小編給大家分享的vue實(shí)現(xiàn)仿淘寶結(jié)賬頁(yè)面實(shí)例代碼,主要功能是仿照淘寶頁(yè)面的結(jié)算購(gòu)物車(chē)商品時(shí)自動(dòng)算出合計(jì)價(jià)格的頁(yè)面,具體實(shí)例代碼大家參考下本文2017-11-11關(guān)于Vue新搭檔TypeScript快速入門(mén)實(shí)踐
這篇文章主要介紹了關(guān)于Vue新搭檔TypeScript快速入門(mén)實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue中v-if和v-for一起使用的弊端及解決辦法(同時(shí)使用 v-if 和 v-for不
當(dāng) v-if 和 v-for 同時(shí)存在于一個(gè)元素上的時(shí)候,v-if 會(huì)首先被執(zhí)行,這篇文章主要介紹了vue中v-if和v-for一起使用的弊端及解決辦法,需要的朋友可以參考下2023-07-07