iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
Modern Web

30天每天寫網站系列 第 15

Day15-舊網站重寫成Vue_6_多圖片輪播

  • 分享至 

  • xImage
  •  

先寫時間輪播的部分
一樣先做一個data預設

data: {
    time: [0, 3, 4, 2, 4, 4, 5]
}

預設的數字是每一個"介紹"中有多少張圖片

然後寫函式

timechange() {
    for (let i = 0; i < this.indexs.length; i++) {
        this.indexs[i]++;
        if (this.indexs[i] >= this.time[i]) {
            this.indexs[i] = 0
            this.indexs.push();
        }
        else {
            this.indexs.push();
        }
    }
}

函式內容會比Day12的複雜
首先要讓indexs中的每一個數字都要做到加法,才能讓圖片自己往後切一張
所以要使用for迴圈讓indexs這個陣列的每一個數字都改動到
然後需要判斷是否已經是該"介紹"的最後一張圖
寫一個判別式,若indexs陣列的該項數值>=time陣列同一項,代表已經到最後一張,必須切回第一張,所以直接把數值設定成0
寫好函式後在mounted呼叫他

mounted() {
    setInterval(this.timechange, 3000);
}

便能讓圖片自己切換了
https://i.imgur.com/zU4B6Ze.gif
為了讓切換看的明顯,動圖的秒數是1秒,比較舒適的秒數是2~3秒左右

然後來寫tab標籤被點擊時此篇跟前篇做的一些預設的更動
這邊全部都是寫在Day13的tab標籤會使用到的indexPlus函式
幫函式再新增兩個參數,用以判別被點擊到的tab有多少"介紹"跟各自有多少"圖片"
然後需要改動的是indexs跟time的內容

indexPlus(n, s, im) {
    this.indexs = []
    this.time = []
    for (let i = 0; i < s; i++) {
        this.indexs.push(0)
    }
    for (let i = 0; i < s - 1; i++) {
        this.time.push(im[i + 1].im.length)
    }
    this.time.unshift(0)
    this.tab.fill(false);
    this.tab[n] = 1;
}

在函式中設定好陣列的清除與加入新東西後,我們需要在tab使用函式時給予相對應的參數數值,所以HTML也要做改動

<a class="tab_title" @click="indexPlus(index, itr.length, itr)" for="key" :class="{'choose':tab[index]}">{{key}}</a>

這樣子改過之後我們的tab就能隨意切換也不會跑掉了
https://i.imgur.com/mQzMnFu.gif


上一篇
Day14-舊網站重寫成Vue_5_多圖片切換
下一篇
Day16-舊網站重寫成Vue_7_點擊滾動
系列文
30天每天寫網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言