直接看代码

<template>
    <div class="pic">
        <ul class="tu">
            <transition-group name="img">
            <li v-for="(item,index) in pic" :key="index" v-show="index===mark" @mouseenter="stop" @mouseleave="go">
                <img :src="item" :key="index">
            </li>
            </transition-group>
        </ul>
        <ul class="bannerBtn">
            <li v-for="num in 3">
                <a href="javascript:;" :style="{background:num-1===mark?'#ff7800':''}" @click='change(num-1)' class='aBtn'></a>
            </li>
        </ul>
    </div>
</template>

<script>
    export default {

        data(){
            return{
                pic:["../../../static/image/1.png","../../../static/image/2.png",
                    "../../../static/image/3.png"],
                mark:0,
                timer:''
            }
        },
        created() {
            this.play()
        },
        methods:{
            autoplay(){
                if(this.mark<this.pic.length-1){
                    this.mark++;
                }else{
                    this.mark = 0;
                }

            },
            play(){
                this.timer=setInterval(this.autoplay,5000)
            },
            change(num){
            this.mark=num;
            },
            stop(){
                clearInterval(this.timer);
                this.timer=null;
            },
            go(){
                this.timer=setInterval(this.autoplay,5000)
            }
        }
    }
</script>

<style scoped>
.pic{
    position: relative;
    margin-left:100px;
    margin-top:40px;
    width:550px;
    height:305px;
}
img{width:100%;
    height:100%;
}
.tu li{position:absolute;
        top:0;
        left:0;
        list-style: none;
    }
.img-enter-active,
.img-leave-active {
    transition: all 4s;
}

.img-enter,
.img-leave-to {
    opacity: 0;
}

.img-enter-to,
.img-leave {
    opacity: 1;
}
.aBtn{transition:all 4s ease;}
.bannerBtn li{
    float:left;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    list-style:none;
}
.bannerBtn li a{
    margin-left:2.5px;
    margin-top:1.5px;
    display: block;
    width: 10px;
    height: 10px;
    border:0.5px solid white;
    border-radius: 50%;
}
.bannerBtn{
    width: 70px;
    position:absolute;
    left:35%;
    top:250px;
    bottom:22px;
    height:20px;
    text-align: center;
}
</style>