关于滚动条组件中height的设置问题

关于滚动条组件中height的设置问题

<template>
   <div class="home">
     <header class="g-header-container">
       <home-header/>
     </header>
     <me-scroll>
       <home-slider/>
       <home-nav />
       <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 HomeRecommend from './recommend';
 import MeScroll from 'base/scroll';
 import HomeNav from './nav';
   export default {
       name: "index",
     components:{
         HomeHeader,
         HomeSlider,
         MeScroll,
         HomeNav,
         HomeRecommend
     }
   }
</script>

<style lang="scss" scoped>
 @import  "~assets/scss/mixins";
 .home{
   over-flow:hidden;
   width: 100%;
   height: 100%;
   background-color: $bgc-theme;

   .swiper-container{
     over-flow: hidden;
     width: 100%;
     height: 100%;
   }
 }



</style>
<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" v-lazy="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>
           </p>
         </router-link>
       </li>
     </ul>
   </div>
</template>

<script>
 import {getHomeRecommend} from 'api/home';

 export default {
       name: "HomeRecommend",
   created() {
     this.getHomeRecommend();
   },
   data(){
         return{
           recommends: [],
           curPage:1,
           totalPage:1
         }
   },
   methods:{
         getHomeRecommend(){
           if(this.curPage > this.totalPage){
             return
           };
           getHomeRecommend(this.curPage).then(data => {
              if(data){
                this.curPage++;
                this.recommends = [...this.recommends,...data.itemList];
                this.totalPage = data.totalPage;
                console.log(this.recommends);
              }
           })

         }
   }

 }
</script>

<style lang="scss" scoped>
 @import "~assets/scss/mixins";
 .recommend {
    &-title{
      position: relative;
      padding: 10px 0;
      width: 100%;
      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: #ffffff;
     box-shadow: 0 1px 1px 0 rgba(0,0,0,.12);
     margin-bottom: 8px;
   }

   &-link{
     display: block;
   }

   &-pic{
     position: relative;
     width: 100%;
     padding-top: 100%;
   }

   &-img{
     position: absolute;
     top: 0;
     left: 0;
     height: 100%;
     width: 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>

只有将.swiper-container{
 over-flow: hidden;
 width: 100%;
 height: 100%;
}

中的height设为具体的数值px才能滑动页面,可是又会出现高于设定屏幕高度时的高度,那多出来的高度就只会显示背景色,重新将height改为100%,页面又无法进行滑动。。。

而且初次渲染会出现图片加载不出来的情况,换了一下屏幕的宽高比,图片才能加载出来

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 老师测试源码中,将swiper-container设置成百分百高度,适应父元素的高度,是正常的。

swiper-container下的需要滚动的盒子有内容撑开的高度。

http://img1.sycdn.imooc.com//climg/5e05da42092119ff18470752.jpg

同学可以回顾视频讲解,结合源码实现的效果,帮助自己更好的去理解。

如果同学有疑惑,可以新建提问,将你的相关代码全部粘贴过来(例如:home/index.vue文件然后附上对应的代码),便于老师帮助同学准确的定位与解决问题。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

提问者 慕用0863198 2019-12-27 15:43:48

查看代码样式。。。只要设置100%,swiper-container首先会无法继承父元素的页面宽度,其次他的高度会被内部的swiper-wrapper撑开,除非设置固定高度,可是设置固定高度又会出现兼容性问题。是需要在js中获取页面的宽高然后再对swiper-container的高度进行设定嘛?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师