老师 为什么我的内容不能滚动,视屏看到9:27

来源:4-3 热卖推荐--结构和样式

慕斯_Irice368

2019-10-16 22:58:35

recommend.vue

<template>

    <div class="recommend">

    <h3 class="recommend-title">热卖推荐</h3>

    <ul class="recommend-list" >

      <li

        class="recommend-item"

        v-for="(item, index) in recommends"

        :key="index"

      >

        <router-link

          class="recommend-link"

          :to="{name: 'home-product', params: {id: item.baseinfo.itemId}}"

        >

          <p class="recommend-pic"><img class="recommend-img" :src="item.baseinfo.picUrlNew"></p>

          <p class="recommend-name">{{item.name.shortName}}</p>

          <p class="recommend-origPrice"><del>¥{{item.price.origPrice}}</del></p>

          <p class="recommend-info">

            <span class="recommend-price">¥<strong class="recommend-price-num">{{item.price.actPrice}}</strong></span>

            <span class="recommend-count">{{item.remind.soldCount}}件已售</span>

          </p>

        </router-link>

      </li>

    </ul>

  </div>

</template>

<script>

import {getHomeRecommend} from 'api/home';

/* import MeLoading from 'base/loading'; */


export default {

    data(){

        return {

            name:'HomeRecommend',

            recommends:[],

            totalPage:1,

            curPage:1

        };

       

    },  

    created(){

      this.getRecommend();

    },

    methods:{

        getRecommend(){

            if(this.curPage>this.totalPage){

                retrun;

            }

            getHomeRecommend(this.curPage).then(data =>{

             if(data){

                 

                 this.curPage++;

                 this.totalPage=data.totalPage;

                 this.recommends= this.recommends.concat(data.itemList);

             }

            });

        }

    

    }

  

   

}

</script>

<style lang="scss" scoped>

@import "~assets/scss/mixins";


  .recommend {

    &-title {

      position: relative;

      width: 100%;

      padding: 10px 0;

      font-size: $font-size-l;

      text-align: center;


      &:before,

      &:after {

        content: '';

        position: absolute;

        top: 50%;

        width: 40%;

        height: 1px;

        background-color: #ddd;

      }

      &:before {

        left: 0;

      }

      &:after {

        right: 0;

      }

    }


    &-list {

      @include flex-between();

      flex-wrap: wrap;

    }


    &-item {

      width: 49%;

      background-color: #fff;

      box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.12);

      margin-bottom: 8px;

    }


    &-link {

      display: block;

    }


    &-pic {

      position: relative;

      width: 100%;

      padding-top: 100%;

      margin-bottom: 5px;

    }


    &-img {

      position: absolute;

      top: 0;

      left: 0;

      width: 100%;

      height: 100%;

    }


    &-name {

      height: 36px;

      padding: 0 5px;

      margin-bottom: 8px;

      line-height: 1.5;

      @include multiline-ellipsis();

    }


    &-origPrice {

      padding: 0 5px;

      margin-bottom: 8px;

      color: #ccc;

    }


    &-info {

      @include flex-between();

      padding: 0 5px;

      margin-bottom: 8px;

    }


    &-price {

      color: #e61414;

    }


    &-price-num {

      font-size: 20px;

    }


    &-count {

      color: #999;

    }

  }


  .loading-container {

    padding-top: 100px;

  }


</style>

home/index.vue

<template>

  <div class="home">

    <header class="g-header-container">

      <home-header></home-header>

    </header>

    <me-scroll>

      <home-slider></home-slider>

      <home-nav></home-nav>

      <home-recommend></home-recommend>

    </me-scroll>


    <div class="g-backtop-container"></div>

    <router-view></router-view>

  </div>

</template>

<script>

import HomeHeader from "./header";

import HomeSlider from "./slider";

import MeScroll from "base/scroll";

import HomeNav from "./nav";

import HomeRecommend from "./recommend";


export default {

  data() {

    return { name: "home" };

  },

  components: {

    HomeHeader,

    HomeSlider,

    MeScroll,

    HomeNav,

    HomeRecommend

  }

};

</script>

<style  lang="scss" scoped>

@import "~assets/scss/mixins";

.home {

  overflow: hidden;

  width: 100%;

  height: 100%;

  background-color: $bgc-theme;

}

</style>

scroll/index.vue

<template>

  <swiper :options="swiperOption" >

      <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 {

    data(){

        return{

            name:'MeScroll',

            swiperOption:{

                direction:'vertical',

                slidesPerView:'auto',

                freeMode:true,

                setWrapperSize:true,

                scrollbar:{

                el:this.scrollbar?'.swiper-scrollbar':null,

                hide:true

                }

            }

        }

    },

    components:{

        swiper,

        swiperSlide

    },

    props:{

        scrollbar:{

            type:Boolean,

            default:true

        }

    }

}

</script>


<style lang="scss" scoped>

.swiper-container{

    overflow: hidden;

    width:100%;

    height: 100%;

}

.swiper-slide{

    height: auto;

}

</style>

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

写回答

1回答

好帮手慕慕子

2019-10-17

同学你好, 老师在源码中测试你的这部分代码, 书写是没有问题, 因为数据是异步获取的,当我们的滚动条都已经加载完了,但是它里面的内容可能还没有加载出来, 导致滚动条组件不能正确的获取到内容的总高度, 导致滚动条失效

同学不要着急,下一章节老师就有讲解如何更新滚动条了, 可以先继续往后听一听, 如果在听课的过程中遇到不明白的, 可以继续在问答区新建问题提问, 我们一定会帮助你解决的

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

如果帮助到了你, 欢迎采纳!

祝学习愉快~~

0

0 学习 · 10739 问题

查看课程