解决问题思路

滚动条距离上面的滚动高度(scrollTop) + 滚动条本身高度 = 整个页面的高度(pageHeight)

关键点:滚动条本身高度是多少

事实上,这里就有一个思想误区,人会想直接获取滚动条高度(但找不到这个API,同时滚动条表现出来的高度,也会虽内容变长变短)。

其实你只要考虑一下,为什么会出现滚动条。出现滚动条代表超出可视窗口,它的滚动距离就是超出部分,而可视窗口高度就是滚动条对应的真实高度。

 //滚动条距离顶部高度
function getScrollTop() {
var scrollTop=0;
if(document.documentElement&&document.documentElement.scrollTop) {
scrollTop=document.documentElement.scrollTop;
}
else if(document.body) {
scrollTop= document.body.scrollTop;
}
return Math.ceil(scrollTop);
} //滚动条本身高度:就是可视窗口高度
function getScrollBarHeight(){
let scrollBarHeight = document.documentElement.clientHeight;
return Math.ceil(scrollBarHeight);
} //整个页面高度
function getPageHeight() {
return Math.ceil(Math.max(document.body.clientHeight,document.documentElement.scrollHeight));
} window.onscroll = function () {
let top = getScrollTop();
let ch = getScrollBarHeight();
let sh = getPageHeight();
if (top + ch >= sh) {
console.log("到达底部");
}else{
console.log("没有到达底部");
}
}

js 判断滚动条 是否滚动到底部的更多相关文章

  1. js 判断浏览器是否滚动到底部

    //jquery 实现代码 $(document).height() == $(window).height() + $(window).scrollTop() 1 整个空间的高度 包含(滚动条距离顶 ...

  2. js 判断滚动条的滚动方向

    以下代码实现判断页面的滚动条的滚动方向: var sign = 80;//定义默认的向上滚与向下滚的边界 window.onscroll = window.onresize = function(){ ...

  3. js 判断滚动条是不是在浏览器底部

    http://jingyan.baidu.com/album/86f4a73e91da7837d65269d5.html?picindex=2

  4. js判断滚动条是否已到页面最底部或顶部实例

    原文 本文实例讲述了js判断滚动条是否已到页面最底部或顶部的方法.分享给大家供大家参考.具体分析如下: 我们经常会看到很多的网站一个返回顶部效果就是当我们滚动条到指定位置时返回顶部出来了,否则就自动隐 ...

  5. 不同浏览器对document.documentElement和document.body的scrollheight ,scrollTop,clientHeight以及判断滚动条是否滚动到页面最底部 【转载】

    前段时间学习怎么写一个瀑布流的时候,就接触到document.documentElement和document.body的区别,然后今天查资料的时候看到这篇博客,遂转载记录在此. 两种特殊的文档属性可 ...

  6. js 判断滚动条是否停止滚动

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox

    做web开发经常会碰到需要获取浏览器的滚动条与顶部和底部的距离,然后做相应的处理动作.下面作者就如何通过js来获取浏览器滚动条距离浏览器顶部和底部的高度做一下分享,这个是同时兼容ie和firefox的 ...

  8. 实现winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部

    判断 DataGridView控件滚动条是否滚动到当前已加载的数据行底部,其实方法很简单,就是为DataGridView控件添加Scroll事件,然后写入以下代码就可以了,应用范围:可实现分部加载数据 ...

  9. js判断滚动条到底部

    判断滚动条到底部,需要用到DOM的三个属性值,即scrollTop.clientHeight.scrollHeight. scrollTop为滚动条在Y轴上的滚动距离. clientHeight为内容 ...

  10. winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部 z

    http://www.zuowenjun.cn/post/2015/05/20/162.html 判断 DataGridView控件滚动条是否滚动到当前已加载的数据行底部,其实方法很简单,就是为Dat ...

随机推荐

  1. 100 行 shell 写个 Docker

    作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker. 一.目的 在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup.Na ...

  2. 2211-13 flask模板

    第 3 章:模板 在一般的 Web 程序里,访问一个地址通常会返回一个包含各类信息的 HTML 页面.因为我们的程序是动态的,页面中的某些信息需要根据不同的情况来进行调整,比如对登录和未登录用户显示不 ...

  3. 视觉十四讲:第七讲_2D-2D:对极几何估计姿态

    1.对极几何 从2张图片中,得到若干个配对好的2d特征点,就可以运用对极几何来恢复出两帧之间的运动. 设P的空间坐标为: \(P=[X,Y,Z]^{T}\) 两个像素点\(p_{1},p_{2}\)的 ...

  4. vue3.0+echart可视化

    vue3.0 + echart可视化 案例1: 案例代码 <template> <div ref="test" style="width:800px;h ...

  5. Cesium源码之Label(二)

    我们查看Cesium源码时,有时会发现源码中有大量的includeStart开头的注释,如下图所示. 这里面大多是调试信息,当使用gulp打包时,removePragmas参数设置为true,则会删除 ...

  6. 开源免费视频会议Jitsi-meet介绍

    Jitsi Meet 是基于WebRTC技术的开源语音.视频会议和即时消息服务 Jitsi 集合的一部分.通过 Jitsi Meet,你可以即刻主持群组视频通话(即视频会议),你甚至都不需要建立帐户. ...

  7. nvm管理node和npm

    安装nvm 下载地址:https://github.com/coreybutler/nvm-windows/releases 下载前卸载调node,安装时注意记住所在路径,傻瓜式安装.安装后nvm - ...

  8. 跳板攻击之:Netsh端口代理转发

    跳板攻击之:Netsh端口代理转发 目录 跳板攻击之:Netsh端口代理转发 1 命令解析 2 代理转发内网22端口 3 代理转发外网4444端口 4 注意 1 命令解析 netsh interfac ...

  9. 2023年2月份CKA考试历程

    2023年2月份CKA 考试历程 目录 2023年2月份CKA 考试历程 一.购买CKA/CKS套餐 二.CKA 考试练习 三.CKA 第一次考试 考前考中 考后 四.CKA 第二次考试 五.考试的一 ...

  10. Spring cloud Sleuth 分布式链路跟踪

    在微服务框架种. 一个由客户端发起的请求在后端系统种会经过不同的服务节点来调用协同产生的最后的请求结果. 每一个前端请求都会形成一条复杂的分布式服务调用的链路.链路种出现任何一环出现高延时或者错误都会 ...