只有一张图片的时候也可以滚动怎么解决?
是不是因为开了无缝滚动的原因,HTML 结构里面也是生成了三张图片。Swiper 文档上说使用了 loop 模式后,watchOverflow 会无效。


13
收起
正在回答 回答被采纳积分+1
5回答
夜雨倾河
2020-01-11 11:19:01
// home/slider.vue
<template>
<div class="slider-wrapper">
<mine-slider
:direction="direction"
:loop="loop"
:interval="interval"
:pagination="pagination"
v-if="sliders.length"
>
<swiper-slide v-for="(item, index) in sliders" :key="index">
<a :href="item.linkUrl" class="slider-link">
<img :src="item.picUrl" alt="" class="slider-img">
</a>
</swiper-slide>
</mine-slider>
</div>
</template>
<script>
import MineSlider from '@/base/slider';
import {swiperSlide} from 'vue-awesome-swiper';
import {sliderOptions} from './config.js'; // 引入轮播图配置文件
import {getHomeSlider} from '@/api/home.js';
export default {
name: 'home-slider',
data() {
return {
direction: sliderOptions.direction,
loop: sliderOptions.loop,
interval: sliderOptions.interval,
pagination: sliderOptions.pagination,
sliders: [
// {
// 'linkUrl': 'https://www.imooc.com',
// 'picUrl': require('./1.jpg') // 在 js 中,本地图片要通过 require() 来引入
// },
// {
// 'linkUrl': 'https://www.imooc.com',
// 'picUrl': require('./2.jpg')
// },
// {
// 'linkUrl': 'https://www.imooc.com',
// 'picUrl': require('./3.jpg')
// },{
// 'linkUrl': 'https://www.imooc.com',
// 'picUrl': require('./4.jpg')
// }
]
}
},
created() {
this.getSlider();
},
methods: {
getSlider() {
getHomeSlider().then(data => {
this.sliders = data;
});
}
},
components: {
MineSlider,
swiperSlide
}
}
</script>
<style lang="scss" scoped>
.slider-wrapper{
height: 183px;
}
.slider-link{
display: block;
}
.slider-link,
.slider-img{
width: 100%;
height: 100%;
}
</style>
夜雨倾河
2020-01-11 11:16:17
// base/slider/index.vue
<template>
<swiper :options="swiperOption">
<slot></slot>
<div class="swiper-pagination" v-if="pagination" slot="pagination"></div>
</swiper>
</template>
<script>
// 引入第三方轮播图组件插件
import {swiper} from 'vue-awesome-swiper';
export default {
name: 'MineSlider',
components: {
swiper,
},
data() {
return {
swiperOption: {
watchOverflow: true, // 当只有一张图片时,轮播图失效
direction: this.direction,
autoplay: this.interval ? {
delay: this.interval,
disableOnInteraction: false // 当产生交互时,是否停止自动轮播 flase 表示不停止
} : false,
slidesPerView: 1, // 设置容器能够同时显示的图片数量
loop: this.loop, // loop 为 true 时,小圆点显示并且会滚动,反之没有小圆点 不滚动
pagination: {
el: this.pagination ? '.swiper-pagination' : null
},
}
}
},
props: {
direction: {
type: String,
default: 'horizontal',
// 返回 true,表示传入的值是数组中的其中一个,验证通过
validator(value) {
return [
'horizontal', // 水平滑动
'vertical' // 垂直滑动
].indexOf(value) > -1
}
},
// 是否开启自动轮播
interval: {
type: Number,
default: 3000,
validator(value) {
return value > 0;
}
},
// 无缝滚动
loop: {
type: Boolean,
default: true,
},
// 分页器
pagination: {
type: Boolean,
default: true,
}
}
}
</script>
<style lang="scss" scoped>
.swiper-container{
width: 100%;
height: 100%;
}
</style>
夜雨倾河
2020-01-11 11:12:36
// home.js
import axios from 'axios'; // 引入 axios 用于发送请求,获取数据
import {SUCC_CODE} from './config.js';
// 获取轮播图数据 --ajax
export const getHomeSlider = () => {
return axios.get('http://www.imooc.com/api/home/slider',{timeout: 10}).then(res => {
if(res.data.code === SUCC_CODE) {
return res.data.slider;
}
throw new Error('没有成功获取到数据');
}).catch(err => { // 捕获错误
if(err) {
console.log(err);
}
return [
{
linkUrl: 'https://www.imooc.com',
picUrl: require('@/assets/img/404.png')
}
]
})
}
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程




恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星