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 相关文章推荐
学习ExtJS TextField常用方法
Oct 07 Javascript
javascript中callee与caller的用法和应用场景
Dec 08 Javascript
电子商务网站上的常用的js放大镜效果
Dec 08 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
js实现关闭网页出现是否离开提示
Dec 07 Javascript
详解如何在react中搭建d3力导向图
Jan 12 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
微信小程序select下拉框实现效果
May 15 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php与php MySQL 之间的关系
2009/07/17 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
python分割和拼接字符串
2013/11/01 Python
利用python发送和接收邮件
2016/09/27 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python接口开发实现步骤详解
2020/04/26 Python
关于递归的一道.NET面试题
2013/05/12 面试题
大一自我鉴定范文
2013/12/27 职场文书
庆元旦广播稿
2014/02/10 职场文书
通信工程求职信
2014/07/16 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书