关于Swiper和vue-awesome-swiper的用法

关于Swiper和vue-awesome-swiper的用法

这几天公司要做一个轮播图的效果,想到了之前写JQuery的用到的swiper轮播图插件,在网上一搜发现了有对于vue更友好的vue-awesome-swiper,但是也是基于swiper封装的。然后在网上搜集教程npm装包,打开各种报错,无论是指定版本还是下载最新的都是不行,终于在多次尝试下,发现了可以用的版本,我用的是vue 2.X版本,有需要的朋友可以试试我的方法。下面是详细过程及代码:


  1. 安装依赖包
npm install swiper@6.8.1 --save-dev
npm install vue-awesome-swiper@3.1.3 --save-dev

安装成功后在package.json里查看
在这里插入图片描述

  1. 在main.js全局导入
/* 引入swiper及其相关组件 */
import VueAwesomeSwiper from 'vue-awesome-swiper'
import 'swiper/swiper-bundle.css'
Vue.use(VueAwesomeSwiper)
/* 引入swiper及其相关组件 */

这里有个问题,如果你的swiper版本和我的一样,就可以直接复制;如果不一样的话,css文件的位置可能不同,会导致引入报错,具体css文件位置打开node_modules文件夹下的swiper文件夹就能看到

  1. 在项目中使用
    HTML代码
<swiper :options="swiperOption" ref="mySwiper">
  <swiper-slide v-for="(item, index) in swiperData" :key="index">
    <img class="swiper-img" :src="item.url" />
    <div class="floatBox">
      <ul>
        <li v-for="(childItem, childIndex) in item.floatData" :key="childIndex">
          <label>{{ childItem.label }}</label>
          <span>{{ childItem.span }}</span>
        </li>
      </ul>
    </div>
  </swiper-slide>
  <div class="swiper-button-prev" slot="button-prev"></div>
  <div class="swiper-button-next" slot="button-next"></div>
  <div class="swiper-pagination" slot="pagination"></div>
</swiper>
data里面的数据

给轮播图绑定事件在轮播图的配置项swiperOption里的on就可以添加配置项,这里我添加了一个click点击事件,可以输出当前图片的索引(这里有个问题是click事件里面this指向的是swiper对象实例,并不是vue,需要用箭头函数来写click的回调函数

// 轮播图配置(具体配置可参考http://t.zoukankan.com/xiaocaiyuxiaoniao-p-10521462.html)
swiperOption: {
  loop: true,
  effect: "coverflow",
  grabCursor: true,
  centeredSlides: true,
  slidesPerView: 1.2,
  pagination: {
    el: '.swiper-pagination',
    type: 'bullets',
    //type: 'fraction',
    //type : 'progressbar',
    //type : 'custom',
    progressbarOpposite: true, //使进度条分页器与Swiper的direction参数相反
    bulletElement : 'li', //设定分页器指示器(小点)的HTML标签。
    // dynamicBullets: true,  //动态分页器,当你的slide很多时,开启后,分页器小点的数量会部分隐藏。
    // dynamicMainBullets: 2, //动态分页器的主指示点的数量
    clickable: true, //此参数设置为true时,点击分页器的指示点分页器会控制Swiper切换
  },
  navigation: {
    nextEl: '.swiper-button-next', //前进按钮的css选择器或HTML元素。
    prevEl: '.swiper-button-prev', //后退按钮的css选择器或HTML元素。
    hideOnClick: true, //点击slide时显示/隐藏按钮
    disabledClass: 'my-button-disabled', //前进后退按钮不可用时的类名。
    hiddenClass: 'my-button-hidden', //按钮隐藏时的Class
  },
  coverflowEffect: {
    //修改其中的数值,即可
    rotate: 0, //旋转
    stretch: 80, //拉伸
    depth: 100, //深度
    modifier: 1,
    slideShadows: false,
  },
  observer: true, //修改swiper自己或子元素时,自动初始化swiper
  observeParents: true, //修改swiper的父元素时,自动初始化swiper
  on: {
    click:() =>{
      console.log(this.$refs.mySwiper.swiper.realIndex)
    }
  }
},
// 轮播图及浮窗数据
swiperData:[
  {
    url:require("../assets/images/carImg.png"),
    floatData:[
      {
        label: '型号:',
        span: 'A1234567'
      },
      {
        label: '参数:',
        span: '20.2'
      },
      {
        label: '状态:',
        span: '正常'
      },
      {
        label: '上次维护时间:',
        span: '2022.9.1'
      }
    ]
  },
  {
    url:require("../assets/images/carImg.png"),
    floatData:[
      {
        label: '型号:',
        span: 'A1234567'
      },
      {
        label: '参数:',
        span: '20.2'
      },
      {
        label: '状态:',
        span: '正常'
      },
      {
        label: '上次维护时间:',
        span: '2022.9.1'
      }
    ]
  },
  {
    url:require("../assets/images/carImg.png"),
    floatData:[
      {
        label: '型号:',
        span: 'A1234567'
      },
      {
        label: '参数:',
        span: '20.2'
      },
      {
        label: '状态:',
        span: '正常'
      },
      {
        label: '上次维护时间:',
        span: '2022.9.1'
      }
    ]
  },
  {
    url:require("../assets/images/carImg.png"),
    floatData:[
      {
        label: '型号:',
        span: 'A1234567'
      },
      {
        label: '参数:',
        span: '20.2'
      },
      {
        label: '状态:',
        span: '正常'
      },
      {
        label: '上次维护时间:',
        span: '2022.9.1'
      }
    ]
  }
]
Sass代码
/deep/ .swiper-pagination-bullet{background:#fff !important;}
.swiper-container{height:100%;}
.swiper-slide{
  position:relative;
  width:100%;
  text-align:center;
  display:flex;
  align-items:center;
  justify-content:center;
  img:hover + .floatBox{display:block;}
}
.swiper-button-prev{
  width:23px;
  height:36px;
  background:url(~@/assets/images/toLeftIcon.png) no-repeat;
  &:after{font-size:0;}
}
.swiper-button-next{
  width:23px;
  height:36px;
  background:url(~@/assets/images/toRightIcon.png) no-repeat;
  &:after{font-size:0;}
}
.floatBox{
  display:none;
  position:absolute;
  left:60%;
  top:8%;
  width:145px;
  height:147px;
  background-color:rgba(1,196,249,0.3);
  border:1px solid #01c4f9;
  ul{padding-top:8px;}
  li{padding-left:8px; height:26px; line-height:26px; font-size:16px; color:#fff; text-align:left;}
}

最后附上效果图
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Vue-awesome-swiper是基于Swiper封装的Vue组件,它可以让你更方便地在Vue中使用SwiperSwiper是一个非常流行的移动端滑动组件,它的功能非常强大,支持很多特效和交互方式。Swiper可以用于制作轮播图、图片画廊、滑动菜单等等。 Vue-awesome-swiperSwiper的区别在于,Vue-awesome-swiper是一个Vue组件,它将Swiper封装成了一个可以在Vue中直接使用的组件,使用起来更加方便。而Swiper是一个独立的JavaScript库,需要手动引入和初始化。此外,Vue-awesome-swiper还提供了一些额外的功能,比如自定义指示器、自动轮播等等,可以进一步提高开发效率。 ### 回答2: vue-awesome-swiper 是基于vue框架的一个滑动插件,而swiper 是一个独立的轮播插件。它们的区别主要体现在以下几个方面: 1. 集成方式:vue-awesome-swiper 是专为 Vue 设计的插件,可以通过 npm 或者 yarn 安装,并在项目中直接导入使用,而 swiper 是一个独立的插件,需要在项目中引入 swiper 的 CSS 和 JS 文件。 2. 组件化:vue-awesome-swiper 将轮播功能封装为一个 Vue 的组件,通过自定义标签的方式调用和使用,而 swiper 提供了更为灵活的配置项,可以通过初始化一个 swiper 实例来实现轮播效果。 3. 自定义性:vue-awesome-swiper 可以通过 props 传递配置项,从而实现自定义轮播样式和动画效果,而 swiper 提供了更多的配置选项,可以自定义分页器、切换效果、方向等多个方面的功能。 4. 兼容性:vue-awesome-swiper 是为 Vue 设计的插件,因此与 Vue 框架保持高度兼容,而 swiper 则需要对其他框架进行适配,包括 Vue。一些 Vue 生命周期方法可能无法直接在 swiper 中使用。 综上所述,vue-awesome-swiper 是一个适用于 Vue 项目的滑动插件,它提供了更高的兼容性和灵活性,可以更好地与 Vue 框架集成,并更加方便地使用和自定义轮播功能。而 swiper 则是一个独立的轮播插件,适用于各种前端项目,并提供了更多的自定义选项和配置。 ### 回答3: Vue-awesome-swiper是一个基于Vue.js的轮播插件,而Swiper是一个独立的轮播插件,可以用于任意的Web项目。它们的区别在以下几个方面: 1. 组件化:Vue-awesome-swiper是一个Vue组件,可以直接在Vue项目中使用。而Swiper是一个独立的JavaScript插件,需要手动实例化和配置参数。 2. 集成度:Vue-awesome-swiper已经集成在Vue框架中,具有更高的内聚性和一致性。而Swiper是一个独立的插件,可以用于不同的框架或原生的Web开发中。 3. 使用方式:Vue-awesome-swiper使用Vue的方式来编写和管理轮播组件,可以通过props和事件来实现双向绑定和交互。而Swiper使用原生的JavaScript来编写和控制轮播,需要手动绑定事件和更新状态。 4. 功能扩展性:Vue-awesome-swiper可以结合Vue的特性,通过自定义组件、过滤器和指令等方式来扩展更多功能。而Swiper的功能扩展更多依赖于自定义的HTML和CSS样式。 5. 生态圈:Vue-awesome-swiper作为Vue的一部分,会受到更多的开发者关注和支持,有更多的第三方插件和例子可用。而Swiper作为一个独立的插件,自身也有着庞大的用户群体和丰富的文档。 总的来说,Vue-awesome-swiper是一个特定于Vue的、更方便集成和扩展的轮播插件,而Swiper是一个通用的轮播插件,适用于不同的框架和项目。选择哪个插件取决于具体的项目需求和开发环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值