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 相关文章推荐
让div层随鼠标移动的实现代码 ie ff
Dec 18 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
Javascript的并行运算实现代码
Nov 19 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
动态统计当前输入内容的字节、字符数的实例详解
Oct 27 Javascript
layui use 定义js外部引用函数的方法
Sep 26 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
JQuery基础语法小结
2015/02/27 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
基于jquery实现轮播焦点图插件
2016/03/31 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python写的英文字符大小写转换代码示例
2015/03/06 Python
python基本语法练习实例
2017/09/19 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
python实现手机销售管理系统
2019/03/19 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
python 实现图片裁剪小工具
2021/02/02 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
小学综治宣传月活动总结
2014/07/02 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016年清明节寄语
2015/12/04 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL