• js 实现无限加载分页(适合移动端)


    一、原理:当滚动条到达底部时,执行下一页内容。

    判断条件需要理解三个概念:
        1.scrollHeight 真实内容的高度
        2.clientHeight 视窗的高度,即在浏览器中所能看到的内容的高度
        3.scrollTop 视窗上面隐藏掉的部分,即滚动条滚动的距离

    思路:
        1.使用fixed定位加载框
        2.使用$(window).scroll();方法来触发是否加载

        3.通过 真实内容高度 - 视窗高度 - 上面隐藏部分 < 5 ,作为加载触发的条件

    JavaScript代码:第一种方式

    <script type="text/javascript">
        var page=2; //当前页的页码
        var allpage; //总页码,会从后台获取
        var catid="{$catid}";
        function showAjax(page){
            $.ajax({
                  url:"",
                  type:"post",
                  data:{page:page,catid:catid},
                  success:function(data){
                    //要执行的内容
                    showContent(data);
                  }
            })
        }
        function scrollFn(){
            //真实内容的高度
            var pageHeight = Math.max(document.body.scrollHeight,document.body.offsetHeight);
            //视窗的高度
            var viewportHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;
            //隐藏的高度
            var scrollHeight = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
            if(pageHeight - viewportHeight - scrollHeight < 50){//如果满足触发条件,执行
                showAjax(page);
            }
        }
        function showContent(data){
          var list=eval('('+data+')');
          var ss='';
          for (var i in list) {
            ss=ss+'<li><a href="'+list[i]['url']+'">'+list[i]['title']+'</a></li>';
          }
          $(".minsuList").append(ss);
          page++;  //页数加1
        }
        $(window).bind("scroll",scrollFn);//绑定滚动事件
       </script>
    

     

    <script>
    
        var catid="6";
          var url="/index.php?m=content&c=index&a=ajax_content";
          var p=2;
          $(window).bind("scroll",function(){
          var winHeight = window.innerHeight ? window.innerHeight : $(window).height(); // iphone fix
          var closeToBottom = $(window).scrollTop() + winHeight > $(document).height() - 50;
      
          if(parseInt($("#pages a:nth-last-child(2)").text())<p){
            $(".page_loading").html('已经最底部了...');
            return false;
          };
    
          if(closeToBottom){
            ajax_content();
          }      
         });
    
        function ajax_content(){
                 $.post(url,{catid:catid,p:p},function(res){
                     tplshow(res); 
            },"json");
                 p++;
        }
                  
        function tplshow(res){
                 var datas=res.lists;
                 var appendli="";
                 for(var i=0;i<datas.length;i++){
                  var data=datas[i];
                     if(data.title!=""){
                         appendli+='<li>'+data.title+'</li>'
                     }
                 }
                 var $appendli=$(appendli);
                 $(".modlenews").append($appendli);
        }
    
    
        function timeConver(time){
            var time= new Date(parseInt(time));
            var hour = time.getHours();
            var minute = time.getMinutes();
            return [hour,minute].join(':');
        }
    </script>
    

      

     

    二、

    $(window).scroll(function () {
         //已经滚动到上面的页面高度
        var scrollTop = $(this).scrollTop();
         //页面高度
        var scrollHeight = $(document).height();
          //浏览器窗口高度
        var windowHeight = $(this).height();
         //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
         if (scrollTop + windowHeight == scrollHeight) {
                        dragThis.insertDom();
          }
    });

    三、js插件

    移动端下拉刷新、上拉加载更多插件dropload

  • 相关阅读:
    【转载】Scarbee Pre-Bass 贝司的使用教程
    罗兰管弦乐音色表【中英文对照】 ----转载
    快速查询
    免费好用的Noto字体
    用了一年多之后才搞懂阿里云OSS收费细则
    “生成能够被扫描枪正常扫描出中文的二维码”
    .NET Core 3.0正式版发布
    快速删除一个“大目录”
    WSL2(预览版)体验笔记
    局域网地址为什么是192.168.X.X?为什么连上公司的VPN就上不了网?
  • 原文地址:https://www.cnblogs.com/mracale/p/7426495.html
Copyright © 2020-2023  润新知