vue里引用轮播插件:vue-awesome-swiper 轮播插件
1.文档地址: git地址 :https://github.com/surmon-china/vue-awesome-swiper安装npm install vue-awesome-swiper --save更换版本:先卸载最新的npm uninstall vue-awesome-swiper安装低版本npm install vue-awesome-swiper@2.6...
·
1.文档地址: git地址 :https://github.com/surmon-china/vue-awesome-swiper
安装
npm install vue-awesome-swiper --save
更换版本:
先卸载最新的
npm uninstall vue-awesome-swiper
安装低版本
npm install vue-awesome-swiper@2.6.7 --save
拍坑:在用3.1.3新版时候。分页器老不出来。折腾了好久。要崩溃。
1.方案,可以回老版本
2.写法换下。
// pagination: '.swiper-pagination',
//paginationType: 'bullets', //这个写法在 3.1.3版本,分页器无法显示
//改版4.x后的写法。参照官方文档
pagination: {
el: '.swiper-pagination',
type: 'bullets',
//type: 'fraction',
//type : 'progressbar',
//type : 'custom',
},
版本换代。再加上写法不同,网上大佬提供的各有不同,组合在一起出现各种未知bug害苦了苦逼的我们。所以还是老实研究文档吧
涉及到自定义修改细节样式,
import "../../../node_modules/swiper/dist/css/swiper.min.css";
这是安装时候生成的css文件。也可以下放在style里引入,带@
<style>
@import "../../yourpath/swiper-3.4.2.min.css";
...
/<style>
。其中scoped限制去掉。为了修改原样式进行覆盖。谨慎修改,防止类名冲突重复
ok
二、 点击事件。用vue的绑定滑块事件是无效的。
swiperOption: {
notNextTick: true,
initialSlide:0, // 设定初始化时slide的索引。
effect:"coverflow",
autoplay: true, //自动轮播
delay:3000, //自动轮播间隔时间,单位ms
loop:true, //循环轮播 是否
on:{
click:function(){
console.log(this); //这里坑:this指向是swiper,不是vue
let idx = this.realIndex;
console.log(idx)
}
},
moveStartThreshold:100,
。。。。
也可以使用回调函数,来做。
<swiper :options="swiperOption" ref="mySwiper" @someSwiperEvent="callback">
测试代码:
<template>
<div class="home">
<div class="wrapper" ref="wrapper">
<div class="content home-container">
<!-- swipe slide-->
<div class="">
<swiper :options="swiperOption" ref="mySwiper" @click="callback">
<!-- slides -->
<swiper-slide class="swiper-item" v-for="(list,index) in swiperSlides" :key="index">
{{list.name}}
<img :src="list.swsrc" alt="" width="100%">
</swiper-slide>
<!-- Optional controls -->
<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> -->
<!-- <div class="swiper-scrollbar" slot="scrollbar"></div> -->
</swiper>
</div>
</div>
</div>
</div>
</template>
<script>
import BScroll from 'better-scroll'
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import HeaderTop from '../../components/header/Header.vue'
// import "../../../node_modules/swiper/dist/css/swiper.min.css";
export default {
name: 'HelloWorld',
components:{
HeaderTop,
swiper,
swiperSlide,
},
data () {
return {
msg: 'Welcome to Your Vue.js App',
slideList:[
{name:'tt1',src:'sss'},
{name:'tt2',src:'sss'},
{name:'tt3',src:'sss'},
{name:'tt4',src:'sss'},
],
swiperSlides:[
{'pic':'预见未来 ','des':'Mate10 系列','des1':'华为莱卡 联合设计','swsrc':'static/slide/ban01.jpg'},
{'pic':'华为商城 ','des':'全场最高省700','des1':'亿元优惠券大放送','swsrc':'static/slide/ban02.jpg'},
{'pic':'华为云 ','des':'注册赢 Mate10','des1':'全场云产品低至五折','swsrc':'static/slide/ban03.jpg'},
{'pic':'华为云 ','des':'注册赢 Mate10','des1':'全场云产品低至五折','swsrc':'static/slide/ban04.jpg'},
],
data:'',
swiperOption: {
notNextTick: true,
initialSlide:0, // 设定初始化时slide的索引。
effect:"coverflow",
autoplay: true, //自动轮播
delay:3000, //自动轮播间隔时间,单位ms
loop:true, //循环轮播 是否
clickable:true,
on:{
click:function(){
console.log(this);
let idx = this.realIndex;
console.log(idx)
}
},
moveStartThreshold:100, //滑动的临界值,临界值单位为px,如果触屏距离小于该值滑块不会运动
direction : 'horizontal', //方向,可设置水平(horizontal)或垂直(vertical)
autoplayDisableOnInteraction : false, //设置用户滑动停止,离开后再自动轮播 ,默认true不会
// pagination: '.swiper-pagination', //这个写法在 3.1.3版本,分页器无法显示
pagination: {
el: '.swiper-pagination',
clickable: true,
type: 'bullets',
// type: 'fraction',
// type : 'progressbar',
// type : 'custom',
// 下方对分页自定义样式
// renderBullet: function (index, className) {
// return '<span class="' + className + '">' + (index + 1) + '</span>';
// },
renderBullet: function (index, className) {
let text = '';
switch(index){
case 0:text='壹';break;
case 1:text='贰';break;
case 2:text='叁';break;
case 3:text='肆';break;
case 4:text='伍';break;
}
return '<span class="' + className + '">' + text + '</span>';
},
},
paginationClickable: true, //分页器可以点击
scrollbar:'.swiper-scrollbar',
scrollbarHide:false,//false 一直显示,true只要滚动时候显示,默认false
preventClicks : false,//默认true,阻止触摸滑动时的跳转。
}
}
},
computed:{
// console.log('computedsldkl')
swiper() {
return this.$refs.mySwiper.swiper
}
},
created(){
// this.vm = this;
},
mounted(){
console.log('mounted')
// 初始化滚动插件 better-scroll
this.scroll = new BScroll(this.$refs.wrapper,{
scrollY:true,
click:true,//一开始的点击事件被bscroll阻止了,设置这个才能点击
})
// this.swipe();
// current swiper instance
// 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
console.log('this is current swiper instance object', this.swiper)
//this.swiper.slideTo(1, 1000, false) //默认初始化位置
},
methods:{
callback:function(){
console.log(this.swiper.realIndex)
if (this.swiper.realIndex == 0) {
this.$router.push({path:'/Test2'});
}
},
} //end of methods
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style >
@import "../../assets/css/swiper-3.4.2.min.css";
.wrapper{
overflow: hidden;
height: 94vh;
/*z-index: 1;*/
}
.home-container{
min-height:1200px;
border:1px solid red;
}
.swiperBox{
/*min-height: 400px;*/
border: 1px solid #000;
}
.swiper-slide{
min-height:200px;
border: 1px solid #000;
}
/*分页器样式设置*/
.swiper-pagination{
/*width: 13%!important;*/
border: 1px solid #fff;
}
.swiper-pagination-bullet{
display: inline-block;
width: 1.5rem!important;
height: 1.5rem!important;
color: #fff;
border: 1px solid #fff!important;
font-size: 0.85rem!important;
display: flex;
justify-content: center;
align-items: center;
}
.swiper-pagination-bullet-active{
/*background-color: red!important;*/
}
/*间距*/
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{
margin: 3px 10px;
}
.swiper-item {
width: 100%;
height: 120%;
text-align: center;
font-size: 18px ;
/* Center slide text vertically */
display: -webkit-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex-direction: column;
-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-awesome-swiper
也可以做区域滚动。页面滚动
更多推荐
已为社区贡献22条内容
所有评论(0)