vue中引用swiper轮播插件的教程详解


Posted in Javascript onAugust 16, 2018

有时候我们需要在vue中使用轮播组件,如果是在vue组件中引入第三方组件的话,最好通过npm安装,从而进行统一安装包管理。

申明:本文所使用的是vue.2x版本。

通过npm安装插件:

 npm install swiper --save-dev

在需要使用swiper的组件里引入swiper,swiper的初始化放在mounted里

Slider.vue源码:

<template>
 <div class="swiper-container">
 <div class="swiper-wrapper">
 <div class="swiper-slide"><img src="../fixtures/sliders/t1.svg"/></div>
 <div class="swiper-slide"><img src="../fixtures/sliders/t2.svg"/></div>
 <div class="swiper-slide">Slide 3</div>
 </div>
 <!-- 如果需要分页器 -->
 <div class="swiper-pagination"></div>
 <!-- 如果需要导航按钮 -->
 <!--<div class="swiper-button-prev"></div>-->
 <!--<div class="swiper-button-next"></div>-->
 <!-- 如果需要滚动条 -->
 <!--<div class="swiper-scrollbar"></div>-->
 </div>
</template>
<script>
 import 'swiper/dist/css/swiper.css'
 import Swiper from 'swiper';
 export default {
 name: "Slider",
 mounted(){
 new Swiper ('.swiper-container', {
 loop: true,
 // 如果需要分页器
 pagination: '.swiper-pagination',
 // 如果需要前进后退按钮
 nextButton: '.swiper-button-next',
 prevButton: '.swiper-button-prev',
 // 如果需要滚动条
 scrollbar: '.swiper-scrollbar',
 })
 }
 }
</script>
<style scoped>
 .swiper-container {
 width: 100%;
 margin: 0;
 padding: 0;
 }
 .swiper-wrapper {
 height: 200px;
 }
 .swiper-slide img {
 max-width: 100%;
 }
 .swiper-slide {
 text-align: center;
 background: #fff;
 /* Center slide text vertically */
 display: -webkit-box;
 display: -ms-flexbox;
 display: -webkit-flex;
 display: flex;
 -webkit-box-pack: center;
 -ms-flex-pack: center;
 -webkit-justify-content: center;
 justify-content: center;
 -webkit-box-align: center;
 -ms-flex-align: center;
 -webkit-align-items: center;
 align-items: center;
 }
</style>

运行效果:

vue中引用swiper轮播插件的教程详解

接下来,我们对上面的代码进行重构,因为如果我们用 css 选择器作为 Swiper 定位页面上元素依据的话,假如在一个页面上同时有两个.slider-container,那么这个组件就会乱套 !我们要秉承着低耦合的开发方式来重构我们的代码。

我们可以使用Vue提供的更精确的指明方式在元素中添加ref熟悉,然后在代码内通过 this.$refs.引用名来引用。

这是Vue.js2.0后的编号,ref标记是标准的HTML属性,它取代了Vue.js 1.x中v-ref的写法

需要注意的是,如果改为动态绑定图片,请参考:vue-cil和webpack中本地静态图片的路径问题解决方案

我这里将静态资源文件转移到了static目录下面。

重构后的代码如下:

<template>
 <div>
 <div class="swiper-container" ref="slider">
 <div class="swiper-wrapper">
 <div class="swiper-slide" v-for="slide in slides">
 <router-link :to="{name:'BookDetail',params:{id:slide.id}}">
 <img :src="slide.img_url"/>
 </router-link>
 </div>
 </div>
 </div>
 </div>
</template>
<script>
 import 'swiper/dist/css/swiper.css'
 import Swiper from 'swiper'
 export default {
 name: "Slider",
 data(){
 return{
 slides:[{id:1,img_url:'./static/sliders/t1.svg'},{id:2,img_url:'./static/sliders/t2.svg'}]
 }
 },
 mounted(){
 new Swiper (this.$refs.slider, {
 loop: true,
 // 如果需要分页器
 pagination: '.swiper-pagination',
 // 如果需要前进后退按钮
 nextButton: '.swiper-button-next',
 prevButton: '.swiper-button-prev',
 // 如果需要滚动条
 scrollbar: '.swiper-scrollbar',
 })
 }
 }
</script>

这里还没有把组件完全独立,里面有数据定义,其实可以把这个数据作为一个参数传递进来,也就是组件之间数据传递。

Vue页面跳转传参

通过路由传参,在router/index.js中定义路由

export default new Router({
 routes: [
 {
 name:'BookDetail',
 path:'/books/:id',
 component: BookDetail
 }
 ]
})

前面的轮播组件中已经定义了需要传递的路由参数

<router-link :to="{name:'BookDetail',params:{id:slide.id}}">
 <img :src="slide.img_url"/>
 </router-link>

参数接收界面BookDetail.vue

<template>
<div>
 点击的是:<span v-text="id"></span>
</div>
</template>
<script>
 export default {
 name: "BookDetail",
 data(){
 return{
  id:this.$route.params.id
 }
 },
 props:[]
 }
</script>
<style scoped>
</style>

如果传递参数太多,这样的方式肯定不方便,那么可以采用vuex,或者组件数据传递。

关于组件传值可以参考:Vue 组件之间传值

总结

以上所述是小编给大家介绍的vue中引用swiper轮播插件的教程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS修改css样式style浅谈
May 06 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
jquery实现弹出层效果实例
May 19 Javascript
Bootstrap中CSS的使用方法
Feb 17 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 Javascript
PM2自动部署代码步骤流程总结
Dec 10 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
JS Generator 函数的含义与用法实例总结
Apr 08 Javascript
5个实用的JavaScript新特性
Jun 16 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 #Javascript
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 #Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 #Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 #Javascript
vue watch深度监听对象实现数据联动效果
Aug 16 #Javascript
JS实现的RC4加密算法示例
Aug 16 #Javascript
vue2.0父子组件间传递数据的方法
Aug 16 #Javascript
You might like
解读PHP中上传文件的处理问题
2016/05/29 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
javascript每日必学之封装
2016/02/23 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
Python列表切片用法示例
2017/04/19 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python之django母板页面的使用
2018/07/03 Python
python同时替换多个字符串方法示例
2019/09/17 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
python读取xml文件方法解析
2020/08/04 Python
学生党员思想汇报
2013/12/28 职场文书
二年级体育教学反思
2014/01/15 职场文书
大学生自我鉴定范文模板
2014/01/21 职场文书
小学开学典礼主持词
2014/03/19 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python