vue做的簡單輪播圖


這個輪播圖有兩種方式循環進行圖片的切換,一種是點擊左箭頭或右箭頭來切換上一張或下一張,一種是設置定時器,每過5秒自動切換下一張圖片。

先做出輪播圖的基本樣式,再來做切換的js代碼。我使用數組來保存圖片的地址,注意,數組里的圖片相對地址是根據你html文件的位置來的,因為你是要使用在html代碼里,我一開始根據js文件的位置來,導致出現裂圖。使用v-bind指令,綁定img標簽的src屬性: <img :src="imgArr[index]" id="pic">來進行圖片的切換,這里的index是數組索引,我們從第一張圖片開始,所以我們在data里設置index:0。再使用v-on指令來設置點擊左箭頭和右箭頭進行圖片切換。當我們點擊左箭頭時,使用函數pre,我們先判斷此時的index,假如這時index=0,我們將index設置成3(3是最后一張圖片的索引),點擊右箭頭時同理,假如此時的index=3,則設置index=0,這樣即可達到一種循環播放的效果。

設置每過5秒切換下一張圖片,我使用的是setInterval方法,在mounted()函數里邊使用setInterval(), setIntervar調用的方法在methods里寫,在mounted里調用,注意:setInterval的第一個參數不加括號,第二個參數是時間。

效果如下:

 

 代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>圖片切換</title>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
    <div id="app">
        <img :src="imgArr[index]" id="pic">
        <img src="images/zuojiantou.png" alt="" id="left" @click="pre" >
        <img src="images/youjiantou.png" alt="" id="right"@click="next">
    </div>
    <script src="../../vue/vue.js"></script>
    <script src="js/index.js"></script>
</body>
</html>
html
div{
    width: 400px;
    height: 300px;
    margin: 0 auto;
    position: relative;
}
#pic{
    width: 400px;
    height: 300px;
}
#left{
    position: absolute;
    left: 0px;
    bottom: 150px;
    width: 40px;
}
#right{
    position: absolute;
    right: 0px;
    bottom: 150px;
    width: 40px;
}
css
var app=new Vue({
    el:'#app',
    data: {
        imgArr:
        ["images/1920x1080.jpg",
        "images/1920x1080a.jpg",
        "images/1920x1080b.jpg",
        "images/1920x1080c.jpg"],
        index:0,
        
        
    },
    methods: {
        pre:function(){
            if(this.index>0){
                this.index--
                
            }
            else if(this.index==0){
                this.index=3
            }
            
        },
        next:function(){
            if(this.index<3){
                this.index++
            }
            else if(this.index==3){
                this.index=0
            }
        },
       
    }, 
    mounted() {
            this.next();//先調用一遍
            setInterval(this.next,5000);
        },
})
js

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM