Vue实现上拉加载下一页效果的示例代码

之前从来没有单独的做过手机端的网页。当然,之前我也没有独立的从切图到写代码交互做过前端的页面。

这里边的分页还是和响应电脑端的数字分页。但是,其实独立做一个手机端的网站,而不是响应式的网站的时候,这种数字分页看起来可能是不太好。

手机端网站嘛,还是仿照着APP或者是微信小程序那种上拉触底分页比较好。但是,这个玩意怎么实现呢?

第一种想法,监听滚动条,滚动条滚动到页面底部,触发方法,请求接口加载下一页的数据。嗯,应该是可行的,我们来尝试一下:

监听滚动条所在位置的方法如下:

       /**
         * @name: 监听 滚动条变化
         * @author: camellia
         * @date: 2021-10-10
         */
        const handleScroll = (env:any) => {
            // =========================================================================
            // 回到顶部
            let scrollTop = document.getElementsByClassName('top-div')[0].scrollTop;
            if(scrollTop > 100)
            {
                data.flag_scroll = true
            }
            else
            {
                data.flag_scroll = false
            }
            // ===============================================
            // 上拉加载下一页代码
            let clientHeight = document.getElementsByClassName('top-div')[0].clientHeight;
            let scrollObj = <Element | null>(null);
            // 设备/屏幕高度
            scrollObj = document.querySelector('.top-div'); // 滚动区域
            // var scrollTop_page = document.documentElement.scrollTop || document.body.scrollTop;
            let scrollHeight = data.scrollHeight;
            if (scrollObj != null)
            {
                scrollHeight = scrollObj.scrollHeight // 滚动条的总高度
                data.scrollHeight = scrollHeight;
            }
            console.log("scrollObj:" + scrollObj);
            console.log("scrollHeight:" + scrollHeight);
            console.log("scrollTop:"+scrollTop );
            console.log("clientHeight:"+ clientHeight);
            console.log("total:"+ (scrollTop + clientHeight));
            if ( scrollTop + clientHeight === scrollHeight)
            {
                data.scrollTop = scrollTop;
                // div 到头部的距离 + 屏幕高度 = 可滚动的总高度
                // 滚动条到底部的条件
                getData();// 获取下一页数据
            }//*/
        }

测试一下,效果如下图所示:

看了上边console出来滚动条的值之后,效果体验及其不佳,不行啊,这玩意用不了啊。后来,我就琢磨,不能够啊,怎么能不好用呢。问了下公司的前端,我俩研究了半天,也没有找到太好的解决办法。

这个时候,我灵机一动,上拉加载不好用,那就退而求其次,改成点击加载下一页呗。

这个就不存在难度了,一个点击事件请求接口就好了,最后注意一下,返回值是叠加到数组里边的。不要覆盖。最终效果如下图所示:

做完了之后,总觉得还是上拉加载分页这个功能比较好,这个项目我是用了组件库(vant)

我看了一下vant的使用文档后发现,vant有上拉加载这个组件,我真是……

组件详情如下图所示:

组件要是能满足需求,还是用组件吧……

到此这篇关于Vue实现上拉加载下一页效果的示例代码的文章就介绍到这了,更多相关Vue上拉加载内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于vue封装下拉刷新上拉加载组件

    基于vue和原生javascript封装的下拉刷新上拉加载组件,供大家参考,具体内容如下 upTilte插槽是下拉刷新的自定义内容放的地方 downTilte插槽是上拉加载的自定义内容放的地方 默认插槽为列表内容区域 组件代码如下 <template> <div class="refresh" id="refresh"> <slot name="upTilte"></slot> <slot&g

  • vue瀑布流组件实现上拉加载更多

    最近在做移动端h5页面,所以分页什么的就不能按照传统pc端的分页器的思维去做了,这么小的屏幕去点击也不太方便一般来讲移动端都是上拉加载更多,符合正常使用习惯. 首先简单写一下模板部分的html代码,,很简单清晰的逻辑: <template> <div class="loadmore"> <div class="loadmore__body"> <slot></slot> </div> <d

  • 基于vue2实现上拉加载功能

    本文实例为大家分享了vue2实现上拉加载展示的具体代码,供大家参考,具体内容如下 因为我们项目中,还用了swiper.很多都是滑动切换的,但是又得上拉加载,所以导致,很多UI框架,我们用了,都有不同的bug出现,没办法,最后写了一个.代码如下(这个因为很多地方会用,所以建议放在components/common下面): <template> <div class="loadmore"> <slot></slot> <slot nam

  • Vue实现上拉加载下一页效果的示例代码

    之前从来没有单独的做过手机端的网页.当然,之前我也没有独立的从切图到写代码交互做过前端的页面. 这里边的分页还是和响应电脑端的数字分页.但是,其实独立做一个手机端的网站,而不是响应式的网站的时候,这种数字分页看起来可能是不太好. 手机端网站嘛,还是仿照着APP或者是微信小程序那种上拉触底分页比较好.但是,这个玩意怎么实现呢? 第一种想法,监听滚动条,滚动条滚动到页面底部,触发方法,请求接口加载下一页的数据.嗯,应该是可行的,我们来尝试一下: 监听滚动条所在位置的方法如下: /** * @name

  • vue基于vant实现上拉加载下拉刷新的示例代码

    前言 普遍存在于各种app中的上拉加载下拉刷新功能大家都不陌生吧,一般来说,在数据量比较大的情况下,为了更快的渲染和给用户更好的观感体验,我们会将数据做分页处理,让其批量加载,这样一来,在渲染速度上,能给用户一个比较好的体验效果.话说回来,分页处理,也就是我们今天要讲的上拉加载和下拉刷新. 实现思路 下拉刷新: 请求接口赋完值后,将接口返回数据长度与总条数进行比较控制加载不加载的状态,在下拉刷新方法中定义起始页码为第一页,调整加载的状态为false,最后调用请求数据的接口方法,做适当轻提示即可.

  • Vue uni-app框架实现上拉加载下拉刷新功能

    目录 实现上拉加载更多 优化 实现下拉刷新 实现上拉加载更多 打开项目根目录中的pages.json配置文件,为subPackages分包中的商品goods_list页面配置上拉触底的距离: "subPackages": [ { "root": "subpkg", "pages": [ { "path": "goods_detail/goods_detail", "style&

  • Vue vant-ui框架实现上拉加载下拉刷新功能

    目录 知识点速记 基本用法 下拉刷新 代码实现 1.页面布局 2.样式 3.方法 下拉刷新效果: 知识点速记 基本用法 List通过loading和finished两个变量控制加载状态,当组件滚动到底部时,会触发load事件并将loading设置成true.此时可以发起异步操作并更新数据,数据更新完毕后,将loading设置成false即可.若数据已全部加载完毕,则直接将finished设置成true即可. 下拉刷新 List 组件可以与PullRefresh组件结合使用,实现下拉刷新的效果.

  • Android自定义listview布局实现上拉加载下拉刷新功能

    listview实现上拉加载以及下拉刷新的方式有很多.下面是我写的一种自定义的布局,复用性也比较的强.首先就是继承的listview的自定义view.   AutoListView.Java: package com.example.mic.testdemo.view; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.os.Bu

  • Android ListView实现上拉加载下拉刷新和滑动删除功能

    最近项目需要用到可以滑动删除并且带有上拉加载下拉刷新的Listview,查阅了一些资料,大多都是在SwipeMenuListView的基础上去添加头部和底部View,来扩展上拉加载和下拉刷新的功能,不过需要手动的去绘制UI及处理一些动画效果.用起来也不是特别方便.刚好项目中用到PulltorefreshLibrary库,就尝试着扩展了一个PullToRefreshSwipeMenuListView类来实现需求.先看一下效果: 实现步骤 一.组合Pulltorefresh与SwipeMenuLis

  • mescroll.js上拉加载下拉刷新组件使用详解

    本文实例为大家分享了上拉加载下拉刷新组件mescroll.js的具体代码,供大家参考,具体内容如下 附上链接地址http://www.mescroll.com/api.html#NPM,手机端和浏览器都能够使用,唯一推荐: 使用过程中要注意这些问题http://www.mescroll.com/qa.html: 使用注意事项: 1.引入的时候出问题及时看官方给出的解决方案(基本上都必须看): 2.react中一定要在dom渲染之后的方法(didMount)中初始化,因为这个需要拿到dom对象:

  • Android通过XListView实现上拉加载下拉刷新功能

    本文实例为大家分享了XListView实现上拉加载下拉刷新的具体代码,供大家参考,具体内容如下 ## 导入XListVIew第三方库文件.通过LinkedList将刷新数据插入到集合头部,将加载的数据放入集合尾部 ## private Context context; private View view; private String path; private XListView xlv; private LinkedList<Data> listData; private Handler

  • Android 自定义加载动画Dialog弹窗效果的示例代码

    效果图 首先是创建弹窗的背景 这是上面用到的 以shape_bg_5_blue.xml为例,其他的三个无非就是里面的颜色不一样而已 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp"

  • vue.js整合vux中的上拉加载下拉刷新实例教程

    前言 Vux 是基于 Vue 和 Weui 开发的手机端页面 UI 组件库,开发初衷是满足公司的微信端表单需求,因为第三方的调查问卷表单系统在手机上实在比较丑(还是 PC 那一套样式适配了大小而已).于是用 vue 重构了表单组件,后来一发不可收拾把其他常用组件也一并开发了. 相比于 React 还是更喜欢用 Vue ,除了目前社区组件不多,周边构建工具还是比较完善的(作者也特别勤奋). 下面话不多说了,来一看看详细的介绍吧. 先上图 创建项目 使用vue-cli 创建一个vue项目 安装vux

随机推荐