首页 前端知识 vue2:swiper vue-awesome-swiper的使用方法(细节版)

vue2:swiper vue-awesome-swiper的使用方法(细节版)

2024-07-24 23:07:59 前端知识 前端哥 829 422 我要收藏

swiper文档

https://codelife.cc/vue3-video-play/guide/install.html#props

安装(指定版本)

//直接安装版本3即可,自动会选择3.1.3版本
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">
      <!-- 轮播图 -->
      <!-- @slideChange="slideChange" 这是当前轮播图显示的主图变化是触发的事件  可以通过 $ref获取到当前轮播图swiper 然后通过this.$refs.mySwiper.swiper.realIndex 获取到轮播图当前展示项的真实下标 进而得到当前项的数据 -->
      <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">
                  擅长:&nbsp&nbsp&nbsp&nbsp{{ 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, //显示slide的数量
        centeredSlides: true, //居中显示
        loop: true, //循环
        initialSlide: 0, //初始索引
        spaceBetween: 16, //间距
        on: {
          click: function () {
            // 获取点击的索引.
            realIndex = this.realIndex
            // 此处可自定义点击事件,注意此处this指向swiper,定义_this
          },
        },
      },
      // 家医列表数据
      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/

转载请注明出处或者链接地址:https://www.qianduange.cn//article/14323.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!