178 lines
3.6 KiB
Vue
178 lines
3.6 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="container">
|
|||
|
|
<!-- 轮播图区域 -->
|
|||
|
|
<swiper class="swiper" :current="currentIndex" @change="onSwiperChange" :previous-margin="previewMargin + 'px'"
|
|||
|
|
:next-margin="previewMargin + 'px'" :circular="true" :autoplay="false">
|
|||
|
|
<swiper-item v-for="(item, index) in list" :key="index" style="align-content: center;">
|
|||
|
|
<view class="swiper-item" :class="{ active: currentIndex === index }" @click="handleClick(index)">
|
|||
|
|
<image class="image" :src="item.image" />
|
|||
|
|
<!-- <text class="title">{{ item.title }}</text> -->
|
|||
|
|
</view>
|
|||
|
|
</swiper-item>
|
|||
|
|
</swiper>
|
|||
|
|
|
|||
|
|
<!-- 指示器 -->
|
|||
|
|
<!-- <view class="indicators">
|
|||
|
|
<view
|
|||
|
|
v-for="(item, index) in list"
|
|||
|
|
:key="index"
|
|||
|
|
class="dot"
|
|||
|
|
:class="{ active: currentIndex === index }"
|
|||
|
|
@click="switchTo(index)"
|
|||
|
|
></view>
|
|||
|
|
</view> -->
|
|||
|
|
|
|||
|
|
<!-- 控制按钮 -->
|
|||
|
|
<!-- <view class="controls">
|
|||
|
|
<button class="btn" @click="switchTo(currentIndex - 1)">上一张</button>
|
|||
|
|
<button class="btn" @click="switchTo(2)">跳转到第3张</button>
|
|||
|
|
<button class="btn" @click="switchTo(currentIndex + 1)">下一张</button>
|
|||
|
|
</view> -->
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import xinR from '@/static/image/grade/cf-xinren.png';
|
|||
|
|
import fuH from '@/static/image/grade/cf-fuhao.png';
|
|||
|
|
import xingJ from '@/static/image/grade/cf-xingjue.png';
|
|||
|
|
import xingH from '@/static/image/grade/cf-xinghou.png';
|
|||
|
|
import xingW from '@/static/image/grade/cf-xingwang.png';
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
currentIndex: 0,
|
|||
|
|
previewMargin: 30, // 左右露出的边距(单位px)
|
|||
|
|
list: [{
|
|||
|
|
id: 1,
|
|||
|
|
title: '图片1',
|
|||
|
|
image: xinR
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 2,
|
|||
|
|
title: '图片2',
|
|||
|
|
image: fuH
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 3,
|
|||
|
|
title: '图片3',
|
|||
|
|
image: xingJ
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 4,
|
|||
|
|
title: '图片4',
|
|||
|
|
image: xingH
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: 5,
|
|||
|
|
title: '图片5',
|
|||
|
|
image: xingW
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
// 切换轮播图
|
|||
|
|
switchTo(index) {
|
|||
|
|
if (index < 0) index = this.list.length - 1;
|
|||
|
|
if (index >= this.list.length) index = 0;
|
|||
|
|
this.currentIndex = index;
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 轮播图切换事件
|
|||
|
|
onSwiperChange(e) {
|
|||
|
|
this.currentIndex = e.detail.current;
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
// 点击轮播项
|
|||
|
|
handleClick(index) {
|
|||
|
|
console.log('点击了第', index + 1, '张');
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
.container {
|
|||
|
|
padding: 20px;
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
align-items: center;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.swiper {
|
|||
|
|
height: 300rpx;
|
|||
|
|
width: 100%;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.swiper-item {
|
|||
|
|
height: 266rpx;
|
|||
|
|
border-radius: 30rpx;
|
|||
|
|
overflow: hidden;
|
|||
|
|
/* box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); */
|
|||
|
|
transition: all 0.3s ease;
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: column;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: center;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.swiper-item.active {
|
|||
|
|
height: 266rpx;
|
|||
|
|
border-radius: 30rpx;
|
|||
|
|
transform: scale(1.05);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
img {
|
|||
|
|
border-radius: 30rpx !important;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.image {
|
|||
|
|
flex: 1;
|
|||
|
|
width: 92%;
|
|||
|
|
height: 90%;
|
|||
|
|
border-radius: 30rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.title {
|
|||
|
|
padding: 8px;
|
|||
|
|
text-align: center;
|
|||
|
|
background: rgba(0, 0, 0, 0.6);
|
|||
|
|
color: white;
|
|||
|
|
font-size: 14px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.indicators {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: center;
|
|||
|
|
margin: 15px 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.dot {
|
|||
|
|
width: 8px;
|
|||
|
|
height: 8px;
|
|||
|
|
border-radius: 50%;
|
|||
|
|
background-color: #ccc;
|
|||
|
|
margin: 0 5px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.dot.active {
|
|||
|
|
background-color: #007AFF;
|
|||
|
|
transform: scale(1.3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.controls {
|
|||
|
|
display: flex;
|
|||
|
|
justify-content: space-around;
|
|||
|
|
width: 100%;
|
|||
|
|
margin-top: 20px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.btn {
|
|||
|
|
padding: 6px 12px;
|
|||
|
|
font-size: 14px;
|
|||
|
|
background-color: #007AFF;
|
|||
|
|
color: white;
|
|||
|
|
border-radius: 4px;
|
|||
|
|
}
|
|||
|
|
</style>
|