设置setWrapperSize没有获取到高度
来源:3-2 滚动条组件
10hours
2020-04-24 10:39:20
反而是下面的swiper-slide获取到了宽度...
base/scrollbar/index.vue
---------------------------------------------------------
<!--基础scroll组件-->
<!--将swiper当作容器来滑动里面的内容-->
<template>
<swiper :option="swiperOptions">
<swiper-slide>
<slot></slot>
</swiper-slide>
<div class="swiper-scrollbar" v-if="scrollbar" slot="scrollbar"></div>
</swiper>
</template>
<script>
import {swiper, swiperSlide} from 'vue-awesome-swiper';
export default {
name: 'MeScroll',
components: {
swiper,
swiperSlide
},
props: {
scrollbar: {
type: Boolean,
default: true
}
},
data() {
return {
swiperOptions: {
direction: 'vertical',
slidesPerView: 'auto',
freeMode: true,
setWrapperSize: true,
scrollbar: {
el: this.scrollbar ? '.swiper-scrollbar' : null,
hide: true
}
},
}
}
}
</script>
<style lang="scss" scoped>
.swiper-container {
height: 100%;
}
</style>
pages/home/index.vue
--------------------------------------------------------------------------------
<template>
<div class="home">
<header class="g-header-container">
<home-header></home-header>
</header>
<me-scroll>
<home-slider></home-slider>
<home-slider></home-slider>
<home-slider></home-slider>
<home-slider></home-slider>
<home-slider></home-slider>
<home-slider></home-slider>
</me-scroll>
<div class="g-backTop-container"></div>
<router-view></router-view>
</div>
</template>
<script>
import MeScroll from 'base/scrollbar'
import HomeHeader from './header';
import HomeSlider from './slider';
export default {
name: 'Home',
components: {
HomeHeader,
HomeSlider,
MeScroll
}
};
</script>
<style lang="scss" scoped>
@import '~assets/scss/mixins';
.home {
overflow:hidden;
width: 100%;
height: 100%;
background-color:$bgc-theme;
}
</style>
home/slider.vue
---------------------------------------------------------------
<!--首页slider组件-->
<template>
<div class="slider-wrapper">
<me-loading class="slider-wrapper" inline
v-if="!sliders.length"
></me-loading>
<!--传参给基础组件-->
<me-slider
:direction="direction"
:loop="loop"
:interval="interval"
:pagination="pagination"
v-else
>
<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>
</me-slider>
</div>
</template>
<script>
import MeSlider from 'base/slider';
import {swiperSlide} from 'vue-awesome-swiper';
import {sliderOptions} from './config';
import {getHomeSlider} from '../../api/home';
import MeLoading from 'base/loading';
export default {
name: 'HomeSlider',
components: {
MeSlider,
MeLoading,
swiperSlide
},
data() {
return {
direction: sliderOptions.direction,
loop: sliderOptions.loop,
interval: sliderOptions.interval,
pagination: sliderOptions.pagination,
sliders: []
};
},
created() {
this.getSliders();
},
methods: {
getSliders() {
getHomeSlider().then(data => {
this.sliders = data;
});
}
}
};
</script>
<style lang="scss" scoped>
.slider-wrapper {
height: 183px;
}
.slider-link {
display: block;
}
.slider-link,.slider-img {
width: 100%;
height: 100%;
}
</style>
2回答
同学你好,因为options单词少写一个s,导致设置的参数没有传给swiper组件,所以效果不对。
因为vue是启动一个项目,本来就由于环境等问题,老师这边可能无法复现同学的问题,所以建议同学在学习阶段,文件夹以及方法等命名与视频讲解的保持一致,这样在发生错误时,可以直接将对应文件的代码粘贴过来,便于帮助同学高效准确的定位与解决问题。
祝学习愉快~
好帮手慕慕子
2020-04-24
同学你好,如下:粘贴的第一部分代码,同学写的是scroll组件,其实是slider组件代码。
对应源码中base/slider/index.vue文件中的代码,所以老师将同学的代码放在源码中测试,效果实现是没有问题的。
建议:同学结合视频和源码在检查下,是不是引入文件不一样导致的。
如果还有疑惑,可以将你的base文件夹下,关于滚动条的代码也粘贴过来,老师帮助同学再测试下。
祝学习愉快~
相似问题