PHP结合Vue实现滚动底部加载效果


Posted in PHP onDecember 17, 2017

前言

最近的一个项目手机端分页跳转不理想,自己做了一个滚动加载的一个Demo,下面话不多说了,来一起看看详细的介绍吧。

实现思路

     1.获得滚动条到底部的距离 getScrollBottomHeight()

     2.绑定滚动事件handleScroll()handleScroll()判断滚动条到底部距离是否小于设置的bottomHight,并且增加一个loading属性,防止加载时滑动时多次触发,造成多次加载

     3.Ajax请求load.php,通过Page去查询获得当前页数(page+1)的内容

     4.将获取的内容,push 到 list中,完成后Vue 自动渲染新的列表,loading变为false

核心Dom结构

<body>
<div id="Content">
 <div>
  <ul>
   <li v-for="l in list">{{l.title}}</li>
   <li class="loading" v-if="loading">加载中</li>
  </ul>
 </div>
</div>
</body>

Javascript代码

<script>
 var v = new Vue({
  el: "#Content",
  data: {
   list: [{title: "使用思维导图,优雅的完成自己的代码"},
    {title: "左滑右滑的乐趣"},
    {title: "Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务q"},
    {title: "【MYSQL】业务上碰到的SQL问题整理集合"},
    {title: "2018年,前端应该怎么学?"},
    {title: "前端 ajax 请求的优雅方案"},
    {title: "SegmentFault 技术周刊 Vol.39 - 什么!服务器炸了?"},
    {title: "Rokid 开发板试用,开启你的嵌入式开发之旅"},
    {title: "我脑中飘来飘去的css魔幻属性"},
    {title: "用python解决mysql视图导入导出依赖问题"},
    {title: "underscore 系列之防冲突与 Utility Functions"},
    {title: "基于手淘 flexible 的 Vue 组件:TextScroll -- 文字滚动"},
    {title: "基于‘BOSS直聘的招聘信息'分析企业到底需要什么样的PHP程序员"},
    {title: "原生js系列之无限循环轮播组件"},
    {title: "一篇文章了解HTML文档流(normal flow)"},
    {title: "面试官最爱的volatile关键字"},
    {title: "Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务q"},
    {title: "【MYSQL】业务上碰到的SQL问题整理集合"},
    {title: "2018年,前端应该怎么学?"},
    {title: "前端 ajax 请求的优雅方案"},
    {title: "SegmentFault 技术周刊 Vol.39 - 什么!服务器炸了?"},
    {title: "Rokid 开发板试用,开启你的嵌入式开发之旅"},
    {title: "我脑中飘来飘去的css魔幻属性"},
    {title: "用python解决mysql视图导入导出依赖问题"},
    {title: "underscore 系列之防冲突与 Utility Functions"},
    {title: "基于手淘 flexible 的 Vue 组件:TextScroll -- 文字滚动"},
    {title: "基于‘BOSS直聘的招聘信息'分析企业到底需要什么样的PHP程序员"},
    {title: "原生js系列之无限循环轮播组件"},
    {title: "一篇文章了解HTML文档流(normal flow)"},
    {title: "面试官最爱的volatile关键字"},
    {title: "Rokid 开发板试用,开启你的嵌入式开发之旅"}],
   page: 5,//总页数
   nowPage: 1,//本页
   loading: false,//一步加载时的限制
   bottomHight: 50,//滚动条到某个位置才触发时间
  },
  methods: {
   handleScroll: function () {
    if (getScrollBottomHeight() <= v.bottomHight && v.nowPage < v.page && v.loading == false) {
     v.loading = true
     var url = "load.php"
     $.ajax({
      type: "GET",
      url: url,
      async: true,
      dataType: "json",
      success: function (data) {
       for (var i = 0; i < data.length; i++) {
        v.list.push(data[i])
       }
       v.nowPage++
       v.loading = false
      },
     })
    }
   }
  },

 })
 //添加滚动事件
 window.onload = function () {
  window.addEventListener('scroll', v.handleScroll)
 }
 //滚动条到底部的距离
 function getScrollBottomHeight() {
  return getPageHeight() - getScrollTop() - getWindowHeight();

 }
 //页面高度
 function getPageHeight() {
  return document.querySelector("html").scrollHeight
 }
 //滚动条顶 高度
 function getScrollTop() {
  var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
  if (document.body) {
   bodyScrollTop = document.body.scrollTop;
  }
  if (document.documentElement) {
   documentScrollTop = document.documentElement.scrollTop;
  }
  scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
  return scrollTop;
 }
 function getWindowHeight() {
  var windowHeight = 0;
  if (document.compatMode == "CSS1Compat") {
   windowHeight = document.documentElement.clientHeight;
  } else {
   windowHeight = document.body.clientHeight;
  }
  return windowHeight;
 }
</script>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
PHP中实现汉字转区位码应用源码实例解析
Jun 14 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
php注册登录系统简化版
Dec 28 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
PHP大文件分片上传的实现方法
Oct 28 PHP
PHP7下协程的实现方法详解
Dec 17 #PHP
浅谈PHP实现大流量下抢购方案
Dec 15 #PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 #PHP
PHP中OpenSSL加密问题整理
Dec 14 #PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 #PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 #PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 #PHP
You might like
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
用jscript实现列出安装的软件列表
2007/06/18 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
js html实现计算器功能
2018/11/13 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
Python上下文管理器和with块详解
2017/09/09 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python mysql断开重连的实现方法
2019/07/26 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
自我鉴定书
2014/03/24 职场文书
员工评语范文
2014/12/31 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
Python利用capstone实现反汇编
2022/04/06 Python
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL