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 相关文章推荐
通过继承IHttpHandle实现JS插件的组织与管理
Jul 13 Javascript
javascript 获取iframe里页面中元素值的方法
Feb 17 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
js 作用域和变量详解
Feb 16 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
微信小程序 页面跳转事件绑定的实例详解
Sep 20 Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 Javascript
node.js +mongdb实现登录功能
Jun 18 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
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+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
JavaScript简介
2015/02/15 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
python处理cookie详解
2014/02/07 Python
Python列表append和+的区别浅析
2015/02/02 Python
Python打包可执行文件的方法详解
2016/09/19 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python中使用支持向量机(SVM)算法
2017/12/26 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
购买原创艺术品:Zatista
2019/11/09 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
工厂实习感言
2014/01/14 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
房屋买卖协议样本
2014/11/16 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
家长会开场白和结束语
2015/05/29 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书