精华内容
下载资源
问答
  • 主要介绍了jQuery+AJAX实现无刷新下拉加载更多的相关资料,需要的朋友可以参考下
  • vue.js的双向移动端下拉加载更多组件
  • 1、使用uniapp编写。 2、新闻列表。 3、上拉刷新。 4、下拉加载更多。 5、图片在左,文字在右。
  • Android下拉加载更多

    2016-04-16 10:12:27
    1、在适配器之前加页脚,这样适配器会重新被封装成 '有页脚的适配器 2、监听滚动状态改变:1-手指正在滑动 2-手指停止滑动 3-组件停止滚动 3、通过handle和主线程通讯,主线程接收消息更新UI
  • 加载更多(分页加载) 当用户打开一个页面时,假设后台数据量庞大时,一次性地返回所有数据给客户端,页面的打开速度就会有所下降,而且用户只看上面的内容而不需要看后面的内容时,也浪费用户流量,基于优化的...
  • jquery手机端上拉刷新下拉加载更多数据,滚动、滑动加载数据
  • 微信小程序,使用scroll-view实现下拉加载更多(下一页)源码。 可查看文章:http://blog.csdn.net/dKnightL/article/details/76724205
  • 基于jQuery手机端下拉加载更多信息实例
  • 主要为大家详细介绍了pc加载更多功能和移动端下拉刷新加载数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 本篇文章主要介绍了android ListView结合xutils3仿微信实现下拉加载更多,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 移动端 web 下拉加载 更多 效果源码
  • 可以支持下拉加载,通过接口接收自己的后台的数据
  • 移动端下拉刷新 下拉加载更多, 移动端下拉刷新 下拉加载更多
  • listloading是一个移动端的上拉、下拉加载更多的组件。主要依赖于iscroll.js v5.1.2基础上开发的组件,基础库可以使用jquery.js或者zepto.js操作dom节点
  • 1、使用swiper实现手机端下拉刷新上拉加载更多,兼容各种浏览器。
  • 一个实现了点击会出现一个更多列表的demo
  • 移动端下拉加载更多

    2015-08-17 16:20:02
    移动端下拉加载更多
  • 貌似页面下拉加载数据,瀑布流的效果很火,各个网站都能见到各式各样的展示效果,原理大同小异。于是乎,决定自己写一写这个效果,希望能给比我还菜的菜鸟们一点参考价值。 在开始之前,先把实现的基本原理说一下。...
  • 很多App中,新闻或者展示类都存在下拉刷新和上拉加载的效果,如何实现上拉刷新下拉加载更多页面的呢?下面小编通过下面内容给大家介绍jQuery模拟原生态App上拉刷新下拉加载更多页面及原理,需要的朋友可以参考下
  • vlayout 实现仿各大商场demo, 添加footer监听支持下拉加载更多
  • 通过微信小程序的滑块视图容器swiper及swiper-item实现tab切换功能,同时实现下拉刷新,上拉加载更多功能。
  • 主要为大家详细介绍了Android ExpandableListView实现下拉刷新和加载更多效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 滑动冲突解决方式,自定义下拉刷新,上拉加载更多,适配RecyclerView/ListView/ScrollView,支持自定义刷新Header/Footer,支持自动加载更多或手动上拉加载更多
  • 下拉加载更多很少见,下拉在加载数据方面与上拉是一样的,但是如何做到像微信聊天记录一样,下拉之后还是保留在原有的位置就需要思考一下了。 下拉与上拉区别 下拉与上拉在加载数据上面基本一致,但是因为方向不同...

    前言

    前段时间用H5实现一个实时聊天的功能。发现很难实现像微信聊天记录一样下拉加载更多记录。市面上大部分的 Web 项目实现的效果都是上拉加载,下拉刷新。下拉加载更多很少见,下拉在加载数据方面与上拉是一样的,但是如何做到像微信聊天记录一样,下拉之后还是保留在原有的位置就需要思考一下了。
    在这里插入图片描述

    下拉与上拉区别

    下拉与上拉在加载数据上面基本一致,但是因为方向不同,所以也存在以下不同之处。

    1. 上拉是将数据加载到原数据后面,所以用的是数组拼接 concat 方法。而下拉是将数据添加到原数据前面,所以需要使用 unshift 方法。
    2. 上拉是滑动到底部时触发,下拉是滑动到顶部时触发,因此判断 scrollTop 为 0 时触发,触发完之后需要将 scrollTop 重置一下。
    3. 为了模拟微信聊天记录加载方式,下拉之后需要滑动到原先的位置。通过 scrollTo 方法实现,scrollTo(x,y) 接收两个参数,x 为页面 X 轴,y 为页面 Y 轴,这里显然是需要修改 Y 轴的距离。x 为 0 即可。而 y 值就是第一次的 scrollHeight 滑动高度,因为每次加载的数据都是一样的,所以使用 scrollHeight 作为上次滑动位置。
    4. 代码中有很多定时器的使用,主要是为了防止用户频繁滑动(节流)以及在列表渲染之后再去获取 DOM 属性。

    实现思路

    1. 封装一个加载数据的方法,首先加载初始数据;
    2. 获取列表的 scrollHeight,将记录定位到最底部,也就是最新的记录在可视区域的最下面。
    3. 监听滑动,当滑动到最顶部时,加载一屏数据,同时滑动定位到上次初始的位置。

    完整代码如下

    <!doctype html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            .container {
                width: 300px;
                height: 300px;
                overflow: auto;
                border: 1px solid;
                margin: 100px auto;
            }
    
            .item {
                height: 29px;
                line-height: 30px;
                text-align: center;
                border-bottom: 1px solid #aaa;
            }
        </style>
    </head>
    <body>
    <div id="app">
        <div class="container" ref="container">
            <div class="item">{{loadText+"第"+pageNum+"页"}}</div>
            <div v-for="(item, index) in list" :key="index" class="item">{{item}}</div>
        </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                scrollHeight: 0,
                list: [],
                loadText:"加载中...",
                pageSize:20,
                pageNum:1,
            },
            mounted() {
                this.initData();
                const container = this.$refs.container;
                //这里的定时是为了列表首次渲染后获取scrollHeight并滑动到底部。
                setTimeout(() => {
                    this.scrollHeight = container.scrollHeight;
                    container.scrollTo(0, this.scrollHeight);
                }, 10);
                container.addEventListener('scroll', (e) => {
                    //这里的2秒钟定时是为了避免滑动频繁,节流
                    setTimeout(() => {
                        if(this.list.length>=90){
                            this.loadText = "加载完成";
                            return;
                        }
                        //滑到顶部时触发下次数据加载
                        if (e.target.scrollTop == 0) {
                            //将scrollTop置为10以便下次滑到顶部
                            e.target.scrollTop = 10;
                            //加载数据
                            this.initData();
                            //这里的定时是为了在列表渲染之后才使用scrollTo。
                            setTimeout(() => {
                                e.target.scrollTo(0, this.scrollHeight - 30);//-30是为了露出最新加载的一行数据
                            }, 100);
                        }
                    }, 2000);
                });
            },
            methods:{
                //初始数据
                initData() {
                    for (var i = 20; i > 0; i--) {
                        this.list.unshift(i)
                    }
                    this.pageNum++;
                }
            }
        })
    </script>
    </body>
    </html>
    展开全文
  • 主要为大家详细介绍了H5基于iScroll实现下拉刷新和上拉加载更多效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • jQuery手机端上拉刷新下拉加载更多页面是以html5进行开发的手机端列表刷新软件。
  • Vue 实现下拉加载更多

    千次阅读 2020-12-01 14:26:26
    熟悉Element-UI的开发者可能都会有这样的经历,它的无限滚动 InfiniteScroll 并不好用,下面介绍两种下拉加载的实现方法: 1. 使用el-table-infinite-scroll 插件 (1). 安装插件 npm install --save el-table-...

    熟悉Element-UI的开发者可能都会有这样的经历,它的无限滚动 InfiniteScroll 并不好用,下面介绍两种下拉加载的实现方法:

    1. 使用el-table-infinite-scroll 插件

    (1). 安装插件

    npm install --save el-table-infinite-scroll

    (2). 全局引入并注册

    // main.js
    
    import elTableInfiniteScroll from 'el-table-infinite-scroll';
    
    Vue.use(elTableInfiniteScroll);

    (3). 局部文件引入

    <script>
    // 引入
    import elTableInfiniteScroll from 'el-table-infinite-scroll';
    export default {
      // 注册指令
      directives: {
        'el-table-infinite-scroll': elTableInfiniteScroll
      }
    }
    </script>

    (4). 使用指令

    <el-table :height="tableHeight" v-el-table-infinite-scroll="loadMore">
    
    </el-table>

    (5). 代码实例

    <template>
        <div class="app-container">
            <el-table :height="tableHeight" v-el-table-infinite-scroll="loadMore" :data="tableList">
                <!-- 表格数据省略 -->
            </el-table>
        </div>
    </template>
    
    <script>
    // 引入插件
    import elTableInfiniteScroll from "el-table-infinite-scroll";
    
    export default {
        name: "index",
        data() {
            return {
                // 表格高度
                tableHeight:"",
                // 数据总数
                tableCount:0,
                // 表格数据列表
                tableList:[],
                // 是否加载中
                tableLoading:false,
                // 表格搜索条件
                tableSearch:{
                    page:1
                }
            }
        },
        // 注册指令
        directives: {
            "el-table-infinite-scroll": elTableInfiniteScroll,
        },
    
        created() {
            let windowHeight =document.documentElement.clientHeight || document.body.clientHeight;
            // 动态计算表格的高度,200为屏幕内除了表格以外其他元素的高度,依实际情况而定
            this.tableHeight = windowHeight - 200 + "px";
        },
        mounted(){
            this.getTableData(this.tableSearch);
        },
    
        methods: {
            // 请求表格数据
            getTableData(search) {
                let page = search.page;
                let url = "index?page=" + page;
                // 首次打开页面要加载一次数据,为了防止数据过多自动触发滚动,此处需要置为加载中
                this.tableLoading = true;
                this.$http.get(url).then((result) => {
                    if (res.code == 10000) {
                        // 拼接数据
                        this.tableList = this.tableList.concat(result.data.list);
                        this.tableCount = result.count;
                        this.tableSearch.page = result.current;
                        this.tableLoading = false;
                    }
                });
            },
            // 加载更多
            loadMore() {
                if (!this.tableLoading) {
                    this.tableLoading = true;
                    if (this.tableList.length < this.tableCount) {
                        this.tableSearch.page++;
                        this.getTableData(this.tableSearch);
                    } else {
                        this.$message("已加载完所有的数据!");
                        this.tableLoading = false;
                    }
                }
            },
        }
    };
    </script>
    
    

     

    2. 自定义下拉加载方法。

    上面使用的插件需要依赖Element-UI,如果没有使用Element-UI,那就只能自己写一个下拉加载了,实现代码如下:

    <template>
        <div class="app-container">
            <div :style="{height:tableHeight,overflow:'auto'}" id="tableBox">
                <!-- 表格数据省略 -->
            </div>
        </div>
    </template>
    
    <script>
    export default {
        name: "index",
        data() {
            return {
                // 表格高度
                tableHeight:"",
                // 数据总数
                tableCount:0,
                // 表格数据列表
                tableList:[],
                // 是否加载中
                tableLoading:false,
                // 表格搜索条件
                tableSearch:{
                    page:1
                }
            };
        },
        created(){
            let windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
            // 动态计算表格的高度,200为屏幕内除了表格以外其他元素的高度,依实际情况而定
            this.tableHeight = windowHeight - 200 +'px';
        },
        mounted() {
            this.getTableData(this.tableSearch);
            document.getElementById("tableBox").addEventListener('scroll',this.onTableScroll); 
        },
    
        beforeDestroy() {
            // 移除监听事件
            window.removeEventListener('scroll', this.onTableScroll)
        },
    
        methods: {
            onTableScroll(){
                var obj = document.getElementById("tableBox");
                var scrollHeight = obj.scrollHeight;
                var scrollTop = obj.scrollTop; 
                var objHeight = obj.offsetHeight;  
                // 100为阈值,可根据实际情况调整    
                if(scrollHeight <= (scrollTop + objHeight + 100) && !this.tableLoading && this.tableList.length<this.tableCount){ 
                    this.tableLoading = true;
                    this.tableSearch.page++;
                    setTimeout(()=>{   
                        this.getTableData(this.tableSearch);
                    },300)
                }
            },
    
            getTableData(search){
                let page = search.page;
                let url = "index?page=" + page;
                // 首次打开页面要加载一次数据,为了防止数据过多自动触发滚动,此处需要置为加载中
                this.tableLoading = true;
                this.$http.get(url).then((result) => {
                    if (res.code == 10000) {
                        // 拼接数据
                        this.tableList = this.tableList.concat(result.data.list);
                        this.tableCount = result.count;
                        this.tableSearch.page = result.current;
                        this.tableLoading = false;
                    }
                });
            },
            
         
        },
    };
    </script>
    
    

     

    展开全文
  • HTML5+JS 手机下拉加载更多数据,分为iscroll4 iscroll5和原生JS写的三种
  • js 实现简单的下拉加载更多

    千次阅读 2019-07-23 11:38:51
    当用户浏览到页面底部时候,自动加载下一页的内容 let allProductData = [] //全部的数据 let productData = [] //要渲染的数据 let listQuery = { currPage: 1, pageSize: 10 } function queryData(){ //数据...

    当用户浏览到页面底部时候,自动加载下一页的内容

    let allProductData = [] //全部的数据
    let productData = [] //要渲染的数据
    let listQuery = {
    	currPage: 1,
    	pageSize: 10
    }
    
    function queryData(){
        //数据处理 
    productData = allProductData.slice((listQuery.currPage-1) * listQuery.pageSize, listQuery.currPage * listQuery.pageSize) 
        listQuery.currPage++;
     // 及时更新视图
        bindHTML();
    }
    function getAllData(){
        let xhr = new XMLHttpRequest();
        xhr.open('get', './json/data.json', false);
        xhr.onreadystatechange = function() {
    		if (xhr.readyState === 4 && xhr.status === 200) {
    			allProductData = JSON.parse(xhr.responseText).RECORDS;
                // 初始化列表数据  并渲染视图
                queryData();
    
               }
           }
        xhr.send(null);
        
        }
    
    window.onscroll = function() {
    	// 文档内容实际高度(包括超出视窗的溢出部分)
    	var scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
    	console.log(scrollHeight)
    	//滚动条滚动距离
    	var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    	console.log(scrollTop)
    	//窗口可视范围高度
    	var clientHeight = window.innerHeight || Math.min(document.documentElement.clientHeight, document.body.clientHeight);
    	console.log(clientHeight)
    
    	if (clientHeight + scrollTop >= scrollHeight) {
          queryData();
         }
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,816
精华内容 24,726
关键字:

下拉加载更多