php如何实现swiper,vue中如何使用swiper轮播插件来实现轮播图(代码分析)

本篇文章给大家带来的内容是关于vue中如何使用swiper轮播插件来实现轮播图(代码分析),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

通过npm安装插件:

npm install swiper --save-dev

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

Slider.vue源码:

t1.svg
t2.svg
Slide 3

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',

})

}

}

.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;

}

运行效果:

5fc188b6d7c0ee5801b71f6e24cb2ec5.gif

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

我们可以使用Vue提供的更精确的指明方式在元素中添加ref熟悉,然后在代码内通过 this.$refs.引用名来引用。这是Vue.js2.0后的编号,ref标记是标准的HTML属性,它取代了Vue.js 1.x中v-ref的写法

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

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

重构后的代码如下:

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',

})

}

}

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

Vue页面跳转传参

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

export default new Router({

routes: [

{

name:'BookDetail',

path:'/books/:id',

component: BookDetail

}

]

})

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

参数接收界面BookDetail.vue

点击的是:

export default {

name: "BookDetail",

data(){ return{

id:this.$route.params.id

}

},

props:[]

}

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

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

关于Vue-cli npm run build生产环境打包,本地不能打开问题

之后每次运行:hs即可。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值