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 相关文章推荐
js常用函数 不错
Sep 08 Javascript
Gird事件机制初级读本
Mar 10 Javascript
[推荐]javascript 面向对象技术基础教程
Mar 03 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
Jun 13 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
Jun 20 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
Vue中的Props(不可变状态)
Sep 29 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 Javascript
基于jQuery实现可编辑的表格
Dec 11 jQuery
实现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+PHP的查询的例子
2006/10/09 PHP
自动跳转中英文页面
2006/10/09 PHP
PHP的FTP学习(一)
2006/10/09 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
js控制框架刷新
2008/08/01 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
Python简单进程锁代码实例
2015/04/27 Python
在Python中处理XML的教程
2015/04/29 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python Django的web开发实例(入门)
2019/07/31 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python游戏开发的五个案例分享
2020/03/09 Python
如何利用python读取micaps文件详解
2020/10/18 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
工程力学专业毕业生求职信
2013/10/06 职场文书
计生工作先进事迹
2014/08/15 职场文书
作文评语怎么写
2014/12/25 职场文书
学术会议通知范文
2015/04/15 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS