clientHeight、offsetHeight、scrollHeight、scrollTop的介绍

在前端的项目中,为了提高性能经常会使用到上拉加载,clientHeightoffsetHeightscrollHeightscrollTop是实现上拉 加载的关键。所以,首先来介绍下三者的意义以及区别。
clientHeight:表示的是当前显示的元素的高度,如果存在X轴的滚动条与根元素边框,不包括X轴的滚动条与根元素边框的高度 。
offsetHeight:也表示的是当前显示元素的高度,与clientHeight类似,但offsetHeight包括X轴的滚动条与根元素边框的高度。
scrollHeight:表示内容区域的整个高度,包括溢出的内容区域,即滚动条的 高度。
scrollTop:表示的是滚动条滚动的高度,初始未滚动时的高度为0。
具体如下图所示:

有上图可知:offsetHeight+scrollTop>=scrollHeight时,代表滚动条滑动了底部。

上拉加载的实现

有上可知,当滚动条滑动到底部时,即offsetHeight+scrollTop>=scrollHeight时,我们可以加载新的内容 ,从而实现上拉加载。因此,我们需要监听滚动条的变化。可以使用 onScroll(e)方法进行监听,其中参数e中包含了滚动条的各种信息。我这里使用vue提供的一种@scroll进行滚动条的监听。

<template><div id="app" @scroll="handkeScroll"><div>ghg</div><div>gfhd</div><div>ghd</div><div>gfhd</div><div>gfdhd</div><div>dgfhd</div><div>dhgd</div><div>dhgd</div><div>dhgfdh</div><div>dhgd</div><div>dfhgdgh</div><div>fdghdhg</div><div>fgdhd</div><div>dgggf</div><div>gfdhg</div><div>gfhdhgf</div><div>ghfgdf</div><div>fghdh</div><div>gdhdh</div><div>gfhdh</div></div>
</template><script>export default {name: 'App',methods:{handkeScroll(e){console.log(e);let offsetHeight =  e.srcElement.offsetHeight;let scrollTop = e.srcElement.scrollTop;let scrollHeight = e.srcElement.scrollHeight;console.log(offsetHeight,scrollTop,scrollHeight);if(offsetHeight+scrollTop>=scrollHeight){//滚轮到底,可以进行内容加载//进行内容添加的操作即可}}},
}
</script><style lang="scss">
#app{height: 100%;width: 100%;overflow-y: scroll;& div:nth-child(2n){height: 200px;width: 100%;}& div:nth-child(2n+1){height: 200px;width: 100%;}
}
</style>

clientHeight、offsetHeight、scrollHeight、scrollTop的区别以及上拉加载的实现相关推荐

  1. js上拉加载ajax数据,原生ajax写的上拉加载实例

    上拉加载的思路 1 上拉加载是要把屏幕拉到最底部的时候触发ajax事件请求数据 2.所有要获取屏幕的高度 文档的高度 和滚动的高度 下面的代码是已经做好了兼容的可以直接拿来用 Javascript: ...

  2. Vue 组件封装之 ScrollView 上拉加载更多

    Vue 组件封装之 ScrollView 上拉加载更多 一.ScrollView 上拉加载更多 二.使用案例 三.API 使用指南 四.源代码 一.ScrollView 上拉加载更多 组件说明: 实现 ...

  3. 如何实现上拉加载,下拉刷新?

    如何实现上拉加载,下拉刷新? 一.前言 二.实现原理 上拉加载 下拉刷新 三.案例 小结 一.前言 下拉刷新和上拉加载这两种交互方式通常出现在移动端中 本质上等同于PC网页中的分页,只是交互形式不同 ...

  4. 原生js实现上拉加载

    地址列表组件没有无法使用上拉加载,所以原生js实现 给列表部分注册touchmove事件,监听用户滑动屏幕 判断滚动条的位置距离底部高度为100时,page+1,并且拉去接口 当接口调取过程中或者已经 ...

  5. vue移动端下拉刷新组件、上拉加载组件

    1.下拉刷新DropDownRefresh.vue <template> <div @touchstart="touchStart($event)" @touch ...

  6. vue 仿B站下拉刷新上拉加载

    vue 仿B站下拉刷新上拉加载 功能大部分都是跟B站一样的,还是有一些瑕疵和小bug的,φ(>ω<*) 先上demo连接和gitHub项目地址吧 demo展示 https://github ...

  7. vue移动端下拉刷新、上拉加载

    由于自身的项目比较简单,只有几个H5页面,用来嵌入app中,所有没有引入移动端的UI框架,但是介于能让用户在浏览H5页面时有下拉刷新和上拉加载,有更好的用户体验,自己写组件实现. 1.下拉刷新Drop ...

  8. H5上拉加载以及在微信内置浏览器上拉加载失效问题记录

    第一次采用了距离顶部距离的方式来控制上拉加载 $(window).scroll(function () {// 滚动条距离顶部的距离 大于 200px时if ($(window).scrollTop( ...

  9. Jquery 实现H5页面上拉加载更多

    在最新的H5开发项目中,需要开发上拉加载更多的功能,如何实现上拉加载更多,网上有很多插件可以实现,如:mescroll.mui.isScroll等等,最初我也是选择了使用插件,但在使用过程中发现了如果 ...

  10. 如何实现上拉加载和下拉刷新

    下拉刷新和上拉加载这两种交互⽅式通常出现在移动端中 本质上等同于PC⽹⻚中的分⻚,只是交互形式不同 开源社区也有很多优秀的解决⽅案,如 iscroll . better-scroll . pullto ...

最新文章

  1. MOSS 权限管理总结
  2. less加管道tail_linux中cat、more、less、tail、head命令的区别
  3. 进程间通信(匿名管道)
  4. wordpress如何让百度快速收录_安顺如何发布信息百度收录在首页
  5. CAD,SolidWorks相比ProE,UG等软件有什么区别?
  6. Mini-C编译器设计与实现 文档+任务书+评价表+PPT+项目源码
  7. 搜款网根据关键词取商品列表 API 返回值说明
  8. UI基本控件(一):UIScrollView
  9. 刷百度权重的方法!!刷百度权重不为人知的内幕!慎用!
  10. Android 蓝牙4.0 BLE 获取链接设备Rssi值
  11. 李嘉诚语录/汪涵语录/史玉柱趣事
  12. java sapi.spvoice_SAPI使用总结——SpVoice的使用方法
  13. usbip--局域网内共享的USB设备
  14. 第一课 安装 登陆CentOS 7
  15. CSS中如何让背景颜色半透明
  16. 【Shiro权限管理】17.Shiro权限注解
  17. 发布一个从迅雷下载字幕的小工具
  18. JAVA 淘宝扫码登陆以及下单流程
  19. 业务结构单一,天润云能借IPO说出好故事吗?
  20. 1-1、秋招年3-5月准备期——《Verilog HDL高级数字设计》(第二版)

热门文章

  1. Scratch3.0安装教程
  2. linux 内存清理/释放命令(也可用于openwrt和padavan等系统的路由器)
  3. 海康nvr sdk java调用,海康SDK开发NVR拍照功能
  4. Unity怎么变中文
  5. 钱包系列教程七】玩转 EOS 命令行钱包
  6. Python爬虫下载美女图片(不同网站不同方法)
  7. 计算机实验室场地报告,实验室申请报告.doc
  8. nfc pm3 模拟加密门禁卡_关于如何用PM3将有密门禁卡写入支持NFC的手机
  9. 【转载】用CAM350制作CAM资料的基本步骤
  10. noVNC使用浏览器替代VNC客户端