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 相关文章推荐
Ajax 数据请求的简单分析
Apr 05 Javascript
js创建子窗口并且回传值示例代码
Jul 02 Javascript
node.js中使用q.js实现api的promise化
Sep 17 Javascript
ECMAScript5(ES5)中bind方法使用小结
May 07 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
关于javascript获取内联样式与嵌入式样式的实例
Jun 01 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
js实现抽奖的两种方法
Mar 19 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 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
Oracle 常见问题解答
2006/10/09 PHP
Php+SqlServer实现分页显示
2006/10/09 PHP
初级的用php写的采集程序
2007/03/16 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php实现图片压缩处理
2020/09/09 PHP
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
一文总结学习Python的14张思维导图
2017/10/17 Python
Python实现PS滤镜中马赛克效果示例
2018/01/20 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python实现静态web服务器
2019/09/03 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
介绍一下Java的事务处理
2012/12/07 面试题
应聘教师自荐信
2013/10/12 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
公司合并协议书范本
2014/09/30 职场文书
开展警示教育活动总结
2015/05/09 职场文书
教师远程研修感悟
2015/11/18 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android
SQL 聚合、分组和排序
2021/11/11 MySQL