js 原生判断内容区域是否滚动到底部的实例代码
作者:jayhkw 发布时间:2024-04-22 22:41:45
标签:判断,内容区域,滚动到底部
逻辑
判断内容滚动到底需要知道的信息
内容区域的真实高度(也就是滚动区域)
滚动条距离顶部的位置
内容区域的可见高度
分别对应下面的三个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
来源:http://blog.csdn.net/jayhkw/article/details/53760478


猜你喜欢
- 1.最基本的作为一个本本分分的函数声明使用。 function func(){} 或 var func=function(){}; 2.作为
- 1.定义在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象;再比如行星类,目前只有 8 个对象。这种实例有限且固定的类
- 之前用python调用API存JSON的时候试用了很多方法,现在调用API直接获取参数的时候也是查了好多例子(毕竟我是一个初学者)。结果让我
- 如下所示:#!/usr/bin/python#-*- coding: utf-8 -*-fin=open('add_1.txt
- --禁用 alter table tb disable trigger tir_name --啟用 alter table tb enabl
- 版本:MySQL-5.7.32前言:对于业务繁忙的数据库来说,在运行了一定时间后,往往会产生一些数据量较大的表,特别是对于每天新增数据较多的
- 可能是IP没设置好问题:MySQL权限设置正确,但仍无法远程访问。通过telnet发现3306端口未打开。分析:MySQL默认只绑定127.
- K-Means聚类算法介绍K-Means又称为K均值聚类算法,属于聚类算法中的一种,而聚类算法在机器学习算法中属于无监督学习,在业务中常常会
- 一、引言生成数据库表有下面的三种方式:代码生成。程序包管理器控制台迁移。命令行迁移。下面分别介绍上面的三种方法。二、具体示例1、代码生成在程
- 1、引言小 * 丝:鱼哥,这个周末过得咋样小鱼:酸爽~ ~小 * 丝:额~~ 我能想到的,是这样吗?小鱼:有多远你走多远。小 * 丝:唉,鱼哥,你别说,
- 前言Django完全支持也匿名会话,简单说就是使用跨网页之间可以进行通讯,比如显示用户名,用户是否已经发表评论。session框架让你存储和
- 这篇文章主要介绍了如何使用Python破解ZIP或RAR压缩文件密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 上一篇列出了Perl中定义数组,对象的方式与JS的异同。这里继续补充数组,哈希的相关操作。一、数组可以对数组进行增删,插入。与JS不同的是这
- 众所周知tensorflow造势虽大却很难用,因此推荐使用Keras,它缺省是基于tensorflow的,但通过修改keras.json也可
- 定义变量什么是变量?在程序运行过程中,其值可以改变的量变量的定义?在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被
- 序言哈喽兄弟们,今天咱们来了解一下 fileinput 。说到fileinput,可能90%的码农表示没用过,甚至没有听说过。这不奇怪,因为
- Date对象即日期时间对象,它的主要功能是实现对日期时间的处理1、创建Date对象var myDate = new Date();或var
- JS调试技巧技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置右侧的Breakpoints会汇总你在JS文件所有打过的断点,点击跟ch
- 在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对
- 因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。在学习python解析XML的时候看到