html
<div class="s-round">
<i class="el-icon-caret-left icon-btn icon-left" @click="preBtn"></i>
<i class="el-icon-caret-right icon-btn icon-right" @click="nextBtn"></i>
<div class="s-move">
<div class="item-box" v-for="nl in navList" :style="scaleFun">
轮播的区域
</div>
</div>
css
.s-round {
overflow: hidden;
position: relative;
display: flex;
justify-content: space-around;
}
.icon-left {
color: #ec6e77;
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
}
.icon-right {
color: #75aae0;
position: absolute;
right: 0px;
top: 50%;
transform: translateY(-50%);
}
.s-move {
width: 1100px;
overflow: hidden;
display: flex;
padding: 10px 0;
}
.item-box {
width: 207px;
height: 115px;
margin-right: 8px;
flex-shrink: 0;
cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 3px solid #ccc;
transition: transform 1s;
}
JavaScript
<script>
var sortInterval
export default {
data() {
return {
scale: -220,
arrentIndex: 0
}
},
methods: {
preBtn() {
clearInterval(sortInterval)
if (this.arrentIndex > 0) {
this.arrentIndex--
}
},
nextBtn() {
clearInterval(sortInterval)
if (this.arrentIndex <= this.navList.length - 6) {
this.arrentIndex++
} else {
}
}
},
mounted() {
var _this = this
sortInterval = setInterval(() => {
_this.arrentIndex++
if (_this.arrentIndex === _this.navList.length - 4) {
_this.arrentIndex = 0
}
}, 5000)
},
computed: {
scaleFun() {
var scale = this.scale
var arrentIndex = this.arrentIndex
return `transform:translateX(${scale * arrentIndex + 'px'})`
}
}
}
</script>