设置setWrapperSize没有获取到高度

来源:3-2 滚动条组件

10hours

2020-04-24 10:39:20

反而是下面的swiper-slide获取到了宽度...

http://img.mukewang.com/climg/5ea2509909adbd2009540562.jpg


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回答

好帮手慕慕子

2020-04-24

同学你好,因为options单词少写一个s,导致设置的参数没有传给swiper组件,所以效果不对。

http://img.mukewang.com/climg/5ea29fdf0904f5a110480258.jpg

因为vue是启动一个项目,本来就由于环境等问题,老师这边可能无法复现同学的问题,所以建议同学在学习阶段,文件夹以及方法等命名与视频讲解的保持一致,这样在发生错误时,可以直接将对应文件的代码粘贴过来,便于帮助同学高效准确的定位与解决问题。

祝学习愉快~

0
h0hours
h 明白,是我粗心大意了,感谢老师
h020-04-24
共1条回复

好帮手慕慕子

2020-04-24

同学你好,如下:粘贴的第一部分代码,同学写的是scroll组件,其实是slider组件代码。
http://img.mukewang.com/climg/5ea2892009248eab10020638.jpg

对应源码中base/slider/index.vue文件中的代码,所以老师将同学的代码放在源码中测试,效果实现是没有问题的。

建议:同学结合视频和源码在检查下,是不是引入文件不一样导致的。

如果还有疑惑,可以将你的base文件夹下,关于滚动条的代码也粘贴过来,老师帮助同学再测试下。

祝学习愉快~

0
h0hours
h 我哭了,我这写的跟视频2'03是一样的呀,当时就是把swiper用来当容器作为scroll的基础组件,这个就是base文件夹下的滚动条代码
h020-04-24
共1条回复

0 学习 · 10739 问题

查看课程