js 原生判断内容区域是否滚动到底部的实例代码


Posted in Javascript onNovember 15, 2017

逻辑

判断内容滚动到底需要知道的信息

内容区域的真实高度(也就是滚动区域)

滚动条距离顶部的位置

内容区域的可见高度

分别对应下面的三个API。

element.scrollHeight 获取元素内容高度,,,【只读属性】

element.scrollTop 可以获取或者设置元素的偏移值,常用于,计算滚动条的位置,当一个元素的容器没有产生垂直方向的滚动条,那它的 scrollTop 的值默认为0.

element.clientHeight 读取元素的可见高度【只读属性】

下面直接引用MDN上面的一个经典的公式

判定元素是否滚动到底

如果元素滚动到底,下面等式返回true,没有则返回false.

element.scrollHeight - element.scrollTop === element.clientHeight

案例-用户使用协议

只有等用户阅读完协议才可以点击同意,也就是说滚动条到底部之后代表完成阅读

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>tab</title>
  <style>
    textarea{height: 200px;width: 300px}
  </style>
</head>
<body>

<p>
  <textarea>
    用户咨询条款
    一、咨询系统提供的服务

1、本网站咨询系统(以下简称“本系统”)为用户提供参与各种咨询项目(以下简称“项目”)的机会。用户在包之网上注册成为会员,并可申请某一专家会员通过包之网平台及电话等方式为其提供咨询服务。

2、您应按照您想要咨询的专家其所对应的专家收费金额,根据您希望互动/通话时间的长短,预先存入咨询费用,方可进行预约、咨询。咨询完成后,剩余的款项将在15个工作日内直接退还给您。您应提供详细的收款信息,否则本网站不承担任何责任。提请您注意,若预存金额过低,可能导致咨询中断。咨询费用根据本网站标准的专家收费金额及实际通话时间进行计算。您同意因银行处理本网站对您的每一笔付款所产生的全部费用将由您自行承担。

3、如果您对专家的工作内容或提供咨询服务质量等有异议,则在此等争议完全解决之前,本网站将扣留应付给您的款项。

4、如果您需要发票,应直接向提供咨询的专家要求,本网站不提供任何发票。

5、专家收费详见本网站不时发布的专家收费金额。专家收费金额及其修改均为本条款不可分割的组成部分,请您申请前仔细查看。

6、本网站根据实际情况尽可能根据您的要求、申请与专家进行匹配, 但专家有权不予提供服务。

  </textarea>
</p>
<p>
  <input type="checkbox" value="1" disabled="disabled"> 同意
</p>
<script>
  //获取checkbox元素
  var checkbox=document.querySelector('input[type=checkbox]');

  document.querySelector('textarea').addEventListener('scroll',function () {

    //读取内容区域的真实高度(滚动条高)
//    console.log(this.scrollHeight);

    //读取滚动条的位置
//    console.log(this.scrollTop);

    //设置滚动到的位置
//      this.scrollTop=800;

    //读取元素的高度
//    console.log(this.clientHeight)

    //意思就是内容总体的高度 - 滚动条的偏移值 === 元素的高度(包含内边)但不包含外边距,边框,以及滚动条
    if(this.scrollHeight-this.scrollTop===this.clientHeight){
      console.log("到达底部");
      //移除disabled属性
      checkbox.removeAttribute('disabled')
    }

  })


</script>
</body>
</html>

好吧,今天突然 看到mdn上面的这个API。脑补了一下
Element.scrollTop

以上这篇js 原生判断内容区域是否滚动到底部的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
jQuery中 noConflict() 方法使用
Apr 25 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
js实现div在页面拖动效果
May 04 Javascript
jquery实现全选功能效果的实现代码
May 05 Javascript
微信小程序-消息提示框实例
Nov 24 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
Feb 20 Javascript
angular5 httpclient的示例实战
Mar 12 Javascript
vue生成token并保存到本地存储中
Jul 17 Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 #Javascript
判断div滑动到底部的scroll实例代码
Nov 15 #Javascript
Vue.js实现列表清单的操作方法
Nov 15 #Javascript
判断滚动条滑到底部触发事件(实例讲解)
Nov 15 #Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 #Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 #Javascript
bootstrap paginator分页插件的两种使用方式实例详解
Nov 14 #Javascript
You might like
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
php之readdir函数用法实例
2014/11/13 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
Firefox window.close()的使用注意事项
2009/04/11 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python3实现绘制二维点图
2019/12/04 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python 解析简单的XML数据
2020/07/24 Python
python中xlutils库用法浅析
2020/12/29 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
高中生自我评语大全
2014/01/19 职场文书
挂靠协议书范本
2014/04/22 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server