美文网首页
滚动加载效果实现

滚动加载效果实现

作者: milletmi | 来源:发表于2018-06-22 19:14 被阅读0次

    在我们做滚动加载的时候首先要思考以下问题:

    一、如何判断滚动条是否滚动到页面底部?

    当滚动条的滚动高度和整个文档高度相差不到15像素,则认为滚动条滚动到页面底部了

    1、内容文档高度 - 滚动条滚动高度 - 父容器高度 < 15

    $(document).height() - $(window).scrollTop() - $(this).height()<15
    

    2、container的高度(父容器高度) + 滚动条高度 >= innerContainer(内容文档高度)的高度就触发

    <div class="container">
    <div class="innerContainer"></div>
    </div>
    
    二、当异步请求数据到还没插入DOM(刷新中)触发地步高度不能再次请求数据
    三、当没有下一页数据的时候如何处理

    当没有下一页数据的时候滚动到底端也不要请求数据加载了

    我们还需要了解以下属性:


    1、scrollTop

    scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。
    scroll top offset 指的是滚动条相对于其顶部的偏移。
    如果该方法未设置参数,则返回以像素计的相对滚动条顶部的偏移。
    tips : 设置滚动条的垂直偏移

    $("div").scrollLeft(100);
    

    2、scroll() 方法

    当用户滚动指定的元素时,会发生 scroll 事件。
    scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口)。
    scroll() 方法触发 scroll 事件,或规定当发生 scroll 事件时运行的函数。

    //jquery
    $(selector).scroll(function)
    //js
    window.addEventListener('scroll',function(){
      console.log(90909090)
    }) 
    

    2、height() 方法

    获取高度的事件

    $(selector).height()
    

    简单的demo


    html

    <div class="container">
    <div class="innerContainer"></div>
    </div>
    

    css

    .container{
    height:100px;
    overflow-y: auto;
    }
    .innerContainer{
    height:200px;
    }
    

    js

        $('.container').scroll(function(){
            var _containerHeight = $('.container').height(),
                _scrollTop = $('.container').scrollTop(),
                _innerHeight = $('.innerContainer').height()
            if(_containerHeight + _scrollTop >= _innerHeight){
                //请求接口来做插入数据
            }
            
        })
    

    滚动优化


    我们不希望实时触发handle,在处理一些高频率触发的 DOM 事件的时候,节流(Throttling)能极大提高用户体验。
    下拉加载优化demo

    相关文章

      网友评论

          本文标题:滚动加载效果实现

          本文链接:https://www.haomeiwen.com/subject/sszkyftx.html