<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
list-style: none;
}
.indexes {
display: flex;
position: absolute;
}
.indexes li {
width: 12px;
height: 12px;
margin: 0 10px;
border-radius: 50%;
background:
}
.indexes li.active {
background: red;
}
.container {
width: 700px;
position: relative;
display: flex;
justify-content: center;
border: 1px solid red;
}
.container img {
width: 700px;
}
</style>
</head>
<body>
<div id="app">
<div class="container">
<img :src="img" v-show="i===activeIndex" v-for="(img,i) in list">
<ul class="indexes">
<li :class="{active :i===activeIndex}" v-for="(img,i) in list"></li>
</ul>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
let vm = new Vue({
el: "#app",
data() {
return {
activeIndex: 0,
list: ['http://p1.music.126.net/nhXeKMPCgZZbn1cyowYL_Q==/109951165049323147.jpg?imageView&quality=89',
'http://p1.music.126.net/M6O8M7AYnQSVK05xAb9J9A==/109951165049273694.jpg?imageView&quality=89',
'http://p1.music.126.net/qFByl2TS77pjEO8Z8fN_kg==/109951165049330063.jpg?imageView&quality=89',
'http://p1.music.126.net/aQfHxFI9b32v19zynGuGiQ==/109951165049233036.jpg?imageView&quality=89',
'http://p1.music.126.net/yjlmXhnl8z6Y-R8ybkIpdw==/109951165050136855.jpg?imageView&quality=89',
'http://p1.music.126.net/9GlwjBanTApab4DmKp6Pig==/109951165049975107.jpg?imageView&quality=89'
]
}
},
mounted() {
// setInterval(() => {
// this.activeIndex++
// if(this.activeIndex ===this.list.length) this.activeIndex =0
// }, 1000);
this.run()
},
methods: {
run() {
this.timer = setInterval(() => {
this.activeIndex++
if (this.activeIndex === this.list.length) this.activeIndex = 0
},1000)
},
hover(i){
clearInterval(this.timer)
this.activeIndex = i
this.run()
}
},
})
</script>
</body>
</html>