前端玄机随录2020

实现tab左右滑动切换与下拉刷新,上拉加载结合

2020-01-21  本文已影响0人  我这有点醉
开门见山,附上我的项目地址,大家可以拉代码看看效果

https://github.com/dccdc/vipList.git

效果图
list.png
首先,要选好你的ui框架
关于高度的控制

vueScroller需要设置高度才能展现内容的下拉上拉,我在爬坑时遇到了两种情况:

  1. 利用可视高度vh:我在页面的最外层设置了100vh,然后80%高度给了可下拉的内容,20%的高度给了tab头部和其他内容,这样一来,各种功能都正常,似乎是没有问题,但是最让人头疼的设备适配问题来了,在不同的设备上20%的高度对应的px是不一样的,这样tab头部与内容之间就会隔得很开,所以这种方案失败。
  2. 给封装的Scroller组件加上100vh:这种方案导致了滚动条的出现,并且由于父级没有实际的高度,无法禁用滚动条,直接舍弃。

解决方案:给最外层父级容器加上100vh,然后tab内容高度设置为100%,tab头部不设高度,采用自适应,此时会相应的出现滚动条,然后禁用掉这个滚动条就好了(使用overflow时,一定要设高度才能禁用)

VueScroller的使用
<template>
    <div style="height: 100%;" >
        <scroller ref="myscroller" noDataText="我是有底线的" 
                  :on-refresh="refresh" :on-infinite="infinite" >
            <!-- content goes here -->
            
                
            </v-list>
        </scroller>
    </div>
</template>
            refresh(done) {
                var page = 1;
                this.page = 1;//当数据不满一页时,刷新时会调用infinite函数,此处重置一下page
                this.getData(done,page,this.message);
            },
            infinite(done) {
                if(this.firstLoading){//第一次加载时,页码不加1
                    this.firstLoading = false;
                }else{
                    this.page++;
                }
                this.getData(done,this.page,this.message);
            },
    this.$refs.myscroller.finishInfinite(true);
//当参数为false时,上拉获取数据可以重新调用。当参数为true,上拉获取数据回调函数停止使用,下拉下部不再显示loading,会显示‘暂无更多数据’
上一篇下一篇

猜你喜欢

热点阅读