swiper文档
https://codelife.cc/vue3-video-play/guide/install.html#props
安装(指定版本)
| |
| cnpm i vue-awesome-swiper@3 -S |
| |
| cnpm i vue-awesome-swiper@3.1.3 -S |
复制
全局引入
| import Vue from 'vue' |
| import VueAwesomeSwiper from 'vue-awesome-swiper' |
| |
| |
| import 'swiper/css/swiper.css' |
| |
| Vue.use(VueAwesomeSwiper, ) |
复制
页面调用示例 —— 完整代码
| <template> |
| <div class="container"> |
| <div class="home"> |
| |
| |
| <swiper ref="mySwiper" @slideChange="slideChange" :options="option" class="home-medical-box"> |
| <swiper-slide |
| class="benefitBox" |
| v-for="(item, index) in medicalInfo" |
| :key="index" |
| > |
| <div class="home-medical-item"> |
| <img |
| class="medical-img" |
| src="@/assets/images/home-medical.png" |
| alt="小妙家庭医生" |
| /> |
| <div class="medical-card"> |
| <div class="card-header"> |
| <div class="card-header-left"> |
| <span class="medical-name">{{ item.medicalName }}</span> |
| <span class="medical-type">{{ item.medicalType }}</span> |
| </div> |
| <div class="card-header-right"> |
| <span class="evaluation">好评率:</span> |
| <span class="evaluation-info">{{ |
| item.FavorableRating |
| }}</span> |
| </div> |
| </div> |
| <div class="card-body"> |
| <p class="card-content"> |
| 擅长:    {{ item.goodAt }} |
| </p> |
| </div> |
| <div class="card-footer"> |
| <div></div> |
| <span v-for="(item2, index2) in item.tabs" :key="index2">{{ |
| item2 |
| }}</span> |
| </div> |
| </div> |
| </div> |
| </swiper-slide> |
| </swiper> |
| |
| <div class="home-bottom"> |
| <van-button type="default" size="large" block @click="signUpFn" |
| >立即签约</van-button |
| > |
| </div> |
| </div> |
| </div> |
| </template> |
| |
| <script> |
| |
| import { swiper, swiperSlide } from 'vue-awesome-swiper' |
| import 'swiper/dist/css/swiper.css' |
| export default { |
| name: 'home', |
| components: { |
| swiper, |
| swiperSlide, |
| }, |
| data() { |
| let _this = this |
| let realIndex |
| return { |
| option: { |
| slidesPerView: 1.2, |
| centeredSlides: true, |
| loop: true, |
| initialSlide: 0, |
| spaceBetween: 16, |
| on: { |
| click: function () { |
| |
| realIndex = this.realIndex |
| |
| }, |
| }, |
| }, |
| |
| medicalInfo: [ |
| { |
| id: 1, |
| medicalName: '王雪岩', |
| medicalType: '全科医生', |
| FavorableRating: '99%', |
| goodAt: |
| '治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症,治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症', |
| tabs: ['#专业', '#人很温柔', '#水平高'].slice(0, 3), |
| }, |
| { |
| id: 2, |
| medicalName: '小明', |
| medicalType: '骨科医生', |
| FavorableRating: '95%', |
| goodAt: |
| '治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症,治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症', |
| tabs: ['#专业', '漂亮', '#人很温柔', '#水平高', '好看'].slice(0, 3), |
| }, |
| { |
| id: 3, |
| medicalName: '小白', |
| medicalType: '内科医生', |
| FavorableRating: '99%', |
| goodAt: |
| '治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症,治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症', |
| tabs: ['长得白', '颜值高', '#专业', '#人很温柔', '#水平高'].slice( |
| 0, |
| 3 |
| ), |
| }, |
| { |
| id: 4, |
| medicalName: '小黑', |
| medicalType: '牙科医生', |
| FavorableRating: '100%', |
| goodAt: |
| '治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症,治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症', |
| tabs: ['长得黑', '#专业', '#人很温柔', '#水平高', '长得好看'].slice( |
| 0, |
| 3 |
| ), |
| }, |
| { |
| id: 5, |
| medicalName: '小黑', |
| medicalType: '牙科医生', |
| FavorableRating: '100%', |
| goodAt: |
| '治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症,治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症治疗脑出血、颅脑损伤、中风后遗症以及中医治疗颈椎病、各种疑难杂症', |
| tabs: ['长得黑', '#专业', '#人很温柔', '#水平高', '长得好看'].slice( |
| 0, |
| 3 |
| ), |
| }, |
| ], |
| activeIndex:0 |
| } |
| }, |
| created() { |
| }, |
| methods: { |
| |
| signUpFn() { |
| let activeItem = this.medicalInfo[this.activeIndex] |
| console.log('立即签约',activeItem) |
| }, |
| |
| slideChange(){ |
| this.activeIndex = this.$refs.mySwiper.swiper.realIndex |
| console.log('阿啦啦啦啦啦',this.$refs.mySwiper.swiper.realIndex) |
| console.log(轮播图当前展示项的真实下标,this.activeIndex) |
| } |
| }, |
| } |
| </script> |
| <style lang="less" scoped> |
| /deep/ .van-button--default { |
| height: 88px; |
| background: linear-gradient(315deg, #6040f7 0%, #9184ff 100%); |
| color: #fff; |
| font-size: 16px; |
| } |
| .container { |
| min-height: 100vh; |
| background-color: #f5f6fa; |
| padding-top: 40px; |
| |
| .home { |
| width: 100%; |
| } |
| .home-medical-box { |
| .home-medical-item { |
| position: relative; |
| height: 451px; |
| .medical-img { |
| width: 311px; |
| height: 255px; |
| border-top-right-radius: 8px; |
| border-top-left-radius: 8px; |
| } |
| .medical-card { |
| position: absolute; |
| left: 0; |
| bottom: 0px; |
| width: 311px; |
| height: 210px; |
| padding: 24px 17px 20px 16px; |
| background-color: #fff; |
| border-radius: 8px; |
| overflow: hidden; |
| z-index: 99; |
| |
| .card-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| |
| .card-header-left { |
| .medical-name { |
| font-size: 18px; |
| font-weight: 500; |
| color: #333; |
| margin-right: 8px; |
| } |
| .medical-type { |
| background: #edf7ff; |
| border-radius: 2px; |
| padding: 2px; |
| border: 1px solid rgba(54, 162, 245, 0.5); |
| color: #36a2f5; |
| font-size: 12px; |
| } |
| } |
| .card-header-right { |
| font-size: 14px; |
| margin-top: 2px; |
| .evaluation { |
| color: #666; |
| } |
| .evaluation-info { |
| color: #6236ff; |
| } |
| } |
| } |
| .card-body { |
| margin-top: 16px; |
| height: 88px; |
| line-height: 22px; |
| color: #999; |
| font-size: 14px; |
| |
| .card-content { |
| display: -webkit-box; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 4; |
| overflow: hidden; |
| } |
| } |
| .card-footer { |
| margin-top: 26px; |
| font-size: 14px; |
| color: #6236ff; |
| span { |
| padding: 4px 8px; |
| background: #f6f3ff; |
| border-radius: 4px; |
| } |
| } |
| } |
| } |
| } |
| .home-bottom { |
| width: 100%; |
| position: fixed; |
| left: 0; |
| bottom: 0; |
| height: 88px; |
| overflow: hidden; // 清除浮动 |
| } |
| } |
| </style> |
复制
效果

最终效果

第四步:配置options。
查看github的vue-awesome-swiper的官方示例:
https://v1.github.surmon.me/vue-awesome-swiper/