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 相关文章推荐
javascript面向对象之二 命名空间
Feb 08 Javascript
jQuery布局插件UI Layout简介及使用方法
Apr 03 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
javascript实现连续赋值
Aug 10 Javascript
easyui Draggable组件实现拖动效果
Aug 19 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
Nov 17 Javascript
jQuery视差滚动效果网页实现方法经验总结
Sep 29 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
仿照Element-ui实现一个简易的$message方法
Sep 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
php注入实例
2006/10/09 PHP
php单件模式结合命令链模式使用说明
2008/09/07 PHP
CodeIgniter生成网站sitemap地图的方法
2013/11/13 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
python实现sublime3的less编译插件示例
2014/04/27 Python
python八皇后问题的解决方法
2018/09/27 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
在keras中实现查看其训练loss值
2020/06/16 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
什么是数据抽象
2016/11/26 面试题
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
个人创业事迹材料
2014/12/30 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android