这篇文章是对于 vue cli3 项目中,怎样去使用 swiper 问题的总结 ,在使用vue cli3 创建的 vue 项目中,用到 swiper 滑动组件来实现一个 轮播 的效果;
- 先附上 swiper 官网地址 : https://www.swiper.com.cn/
- swiper 概念 :
swiper.js 是一款成熟稳定的应用于 PC端 和 移动端 的滑动效果插件,一般用来 触屏焦点图、触屏整屏滚动 等效果。 swiper分为 2.x 版本和 3.x 版本、 4.x、5.x 版本,2.x版本支持低版本浏览器(IE7),3.x以上放弃支持低版本浏览器,适合应用在移动端。
- 下载 swiper 插件 :
npm install swiper vue-awesome-swiper --save
- 配置 main.js :
import VueAwesomeSwiper from 'vue-awesome-swiper' import 'swiper/css/swiper.css' Vue.use(VueAwesomeSwiper)
- 在后缀为.vue的页面上 :
<template> <div id="container"> <swiper :options="swiperOption" ref="mySwiper"> <swiper-slide class="swiper-slide games" v-for="item in list" :key="item.id"> <img :src="item.src" alt="图片加载失败!"> </swiper-slide> <div class="swiper-pagination" slot="pagination"></div> <div class="swiper-button-prev" slot="button-prev"></div> <div class="swiper-button-next" slot="button-next"></div> </swiper> </div> </template>
<script> import { swiper, swiperSlide } from 'vue-awesome-swiper'; export default { name: 'carrousel', data() { return { list:[ {id:1,src:require('@/assets/image/1.jpg')}, {id:2,src:require('@/assets/image/2.jpg')}, {id:3,src:require('@/assets/image/3.jpg')}, {id:4,src:require('@/assets/image/4.jpg')} ], swiperOption: { autoplay: {//可选选项,自动滑动 disableOnInteraction: false, //用户操作后是否禁止自动循环 delay: 3000 //自自动循环时间 }, speed: 2000, //切换速度,即slider自动滑动开始到结束的时间(单位ms) loop: true, //循环切换 grabCursor: true, //设置为true时,鼠标覆盖Swiper时指针会变成手掌形状,拖动时指针会变成抓手形状 // setWrapperSize: true, //Swiper使用flexbox布局(display: flex),开启这个设定会在Wrapper上添加等于slides相加的宽或高,在对flexbox布局的支持不是很好的浏览器中可能需要用到。 autoHeight: true, //自动高度。设置为true时,wrapper和container会随着当前slide的高度而发生变化。 scrollbar: '.swiper-scrollbar', mousewheelControl: true, //设置为true时,能使用鼠标滚轮控制slide滑动 observeParents: true, //当改变swiper的样式(例如隐藏/显示)或者修改swiper的子元素时,自动初始化swiper pagination: { el: '.swiper-pagination', // type : 'progressbar', //分页器形状 clickable: true //点击分页器的指示点分页器会控制Swiper切换 }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' } } } }, computed: { swiper() { return this.$refs.mySwiper.swiper; } } } </script>
注意: 在vue中加载图片路径跟我们不用框架引入路径是不同,在页面中使用的话,写的路径是可以生效的,但是我们想动态加载图片路径的话是不生效的。
- 解决方案一 :
1,页面上,绑定动态路径
<img :src="imgUrl">2, data 里面:用 require(图片加载)
data(){
return {
imgUrl:require('@/assets/image/1.png');
}
}解决方案二 :
把图片放到static,然后相对路径获取图片就好了;
src: '../../../../static/image/1.png';
<style scoped="scoped"> img { width: 100%; height: 300px; } </style>