vue轮播图

借助第三方轮播插件 npm install vue-awesome-swiper --save
打开github,里面搜索vue-awesome-swiper
找相对应的文件
执行里面相关的命令

npm install vue-awesome-swiper --save

在main.js中引入

import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'

// require styles
import 'swiper/dist/css/swiper.css'

Vue.use(VueAwesomeSwiper, /* { default global options } */)

在swiper组件中的template模板中copy,删掉不用的功能

<template>
  <swiper :options="swiperOption" ref="mySwiper" @someSwiperEvent="callback">
    <!-- slides -->
    <swiper-slide>I'm Slide 1</swiper-slide>
    <swiper-slide>I'm Slide 2</swiper-slide>
    <swiper-slide>I'm Slide 3</swiper-slide>
    <swiper-slide>I'm Slide 4</swiper-slide>
    <swiper-slide>I'm Slide 5</swiper-slide>
    <swiper-slide>I'm Slide 6</swiper-slide>
    <swiper-slide>I'm Slide 7</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>
</template>

<script>
  export default {
    name: 'carrousel',
    data() {
      return {
        swiperOption: {
        }
      }

出现问题:在轮播图后面出现的文本在网络比较慢的时候加载会出现,图片还没出来时候,在顶处,图片出来后在图片的下方,会出现抖动的bug,用户体验不好
处理:在swiper的外边再套上一层标签,例如套上一个类名为wrapper的div,
此时给wrapper设置样式为:

//宽度相对于高度是保持31.25的比例
.wrapper {
	width: 100%;
	overflow: hidden;
	height: 0;
	padding-bottom: 31.25%;
}
// 或者
.wrapper {
	width: 100%;
	height: 31.25vw;
	//(viewport,兼容性不好)
}

问题:添加的小圆点会为默认的颜色,如何修改其颜色,由于小圆点是其内部设定的颜色,所以必须要用样式穿透
参考:关于轮播图插件样式失控或样式穿透写法

/deep/ 是sass和less的样式穿透
.wrapper /deep/ .swiper-pagination-bullet {
    width: 20px;
    height: 20px;
    text-align: center;
    line-height: 20px;
    font-size: 12px;
    color:#000;
    opacity: 1;
    background: rgba(0,0,0,0.2);
  }
.wrapper /deep/ .swiper-pagination-bullet-active {
    color:#fff;
    background: #ff51d6;
  }

问题:如何左右都可手动循环播放

data() {
			return {
				swiperOption: {
					pagination: '.swiper-pagination',
					loop: true//支持左右循环播放
				},

问题:通过父组件向子组件传递的数据,循环渲染,刷新页面每次出来的是最后一张图片
解决:在 中添加v-if,意思是当列表数据显示完了,再出现轮播图

<swiper :options="swiperOption" v-if="swiperList.length">
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值