vue不操作dom實(shí)現(xiàn)圖片輪播的示例代碼
本文介紹了vue不操作dom實(shí)現(xiàn)圖片輪播的示例代碼,分享給大家,具體如下:
效果
寬度為1190px且水平居中的輪播盒子;
中間是當(dāng)前顯示的默認(rèn)尺寸圖片;
左右兩邊是預(yù)顯示的小尺寸圖片;
輪播從右至左,圖片逐漸放大。
做普通平滑輪播也可以參照這個(gè)思路
html
<ul> <li v-for="(demo,index) in demoList" :key="index" :class="{'demo-left':demoStyle(index) == 0,'demo-active':demoStyle(index) == 1,'demo-right':demoStyle(index) == 2}" > <img :src="demo.img" alt /> </li> </ul>
css
我們要寫上三個(gè)li不同位置的樣式和一個(gè)li默認(rèn)位置的的樣式。
分別是:
左邊位置的dom樣式;
中間位置的dom樣式;
右邊位置的dom樣式;
默認(rèn)位置的dom樣式。
其中,默認(rèn)的dom隱藏在中間展示的dom下面。
看圖:
圖中:
ul的樣式:
ul { position: relative; width: 1190px; height: 500px; margin: 0 auto; display: flex; }
紫色部分是默認(rèn)的li的dom樣式,設(shè)置在整個(gè)ul水平且垂直居中的位置
ul > li { position: absolute; width: 480px; min-width: 480px; height: 400px; top: 50px; bottom: 50px; left: 355px; font-size: 0; /* 去除img標(biāo)簽留白,與輪播無關(guān) */ overflow: hidden; background: white; box-shadow: 0 0 10px 0 #dddddd; transition: 0.6s; z-index: 1; }
紅色部分是左邊的li的dom樣式,設(shè)置在整個(gè)ul水平靠左、垂直居中的位置
ul > .demo-left { left: 0; z-index: 2; }
黑色部分是中間需要展示的li的dom樣式,設(shè)置在整個(gè)ul水平靠右、垂直居中的位置
ul > .demo-active { width: 600px; min-width: 600px; height: 500px; top: 0; bottom: 0; left: 295px; z-index: 3; }
藍(lán)色部分是右邊的li的dom樣式,設(shè)置在整個(gè)ul水平靠右、垂直居中的位置
ul > .demo-right { left: 710px; z-index: 2; }
圖片水平且垂直居中,可自定義設(shè)置,與輪播無關(guān)
ul > li > img { position: absolute; width: 100%; top: 0; right: 0; bottom: 0; left: 0; margin: auto; }
vue
export default { name: "demo", data() { return { demoList: [ // 圖片列表 { id: "1", src: "圖片路徑" }, { id: "2", src: "圖片路徑" }, { id: "3", src: "圖片路徑" }, { id: "4", src: "圖片路徑" }, { id: "5", src: "圖片路徑" } ], demoActive: 0, // 當(dāng)前顯示的li下標(biāo),設(shè)置為0,表示首次加載顯示第一張圖片 demoTimer: null // 定時(shí)器,聲明demoTimer方便停止輪播和重新開始輪播 } }, methods: { // 根據(jù)返回值給li添加className demoStyle(index) { if (index == this.demoActive - 1) return 0; if (index == this.demoActive ) return 1; if (index == this.demoActive + 1) return 2; if (this.demoActive == 0 && index == this.demoList.length - 1) return 0; if (this.demoActive == this.demoList.length - 1 && index == 0) return 2; }, // 輪播執(zhí)行 demoCarousel() { this.demoActive++; if (this.demoActive > this.demoList.length - 1) { this.demoActive= 0; } } }, mounted() { let _self = this; _self.$nextTick(function () { // 開始輪播,3秒一次 _self.demoTimer = setInterval(_self.demoCarousel, 3000); }); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用el-form-item設(shè)置標(biāo)簽長(zhǎng)度
這篇文章主要介紹了使用el-form-item設(shè)置標(biāo)簽長(zhǎng)度方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue3.0中的雙向數(shù)據(jù)綁定方法及優(yōu)缺點(diǎn)
這篇文章主要介紹了vue3.0中的雙向數(shù)據(jù)綁定方法 ,文中通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Vue3+Canvas實(shí)現(xiàn)簡(jiǎn)易的貪吃蛇游戲
貪吃蛇作為一個(gè)經(jīng)典的小游戲,是很多人兒時(shí)的記憶,當(dāng)時(shí)的掌機(jī)、諾基亞手機(jī)里面都有它的身影。本文將用Vue3?Canvas來復(fù)刻一下這款游戲,感興趣的可以了解一下2022-07-07vue緩存之keep-alive的理解和應(yīng)用詳解
這篇文章主要介紹了vue緩存之keep-alive的理解和應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11在elementui中Notification組件添加點(diǎn)擊事件實(shí)例
這篇文章主要介紹了在elementui中Notification組件添加點(diǎn)擊事件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11vue-cli的webpack模板項(xiàng)目配置文件分析
本篇文章主要對(duì)vue-cli的webpack模板項(xiàng)目配置文件進(jìn)行分析。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04element-ui動(dòng)態(tài)添加表單項(xiàng)并實(shí)現(xiàn)事件觸發(fā)驗(yàn)證代碼示例
這篇文章主要給大家介紹了關(guān)于element-ui動(dòng)態(tài)添加表單項(xiàng)并實(shí)現(xiàn)事件觸發(fā)驗(yàn)證的相關(guān)資料,其實(shí)就是利用了vue的v-for循環(huán)渲染,通過添加數(shù)組實(shí)現(xiàn)動(dòng)態(tài)添加表單項(xiàng),需要的朋友可以參考下2023-12-12vuedraggable+element ui實(shí)現(xiàn)頁(yè)面控件拖拽排序效果
這篇文章主要為大家詳細(xì)介紹了vuedraggable+element ui實(shí)現(xiàn)頁(yè)面控件拖拽排序效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12