前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SCrollTOP scrollHeight

SCrollTOP scrollHeight

作者头像
全栈程序员站长
发布于 2022-09-15 03:39:38
发布于 2022-09-15 03:39:38
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

jQuery 里和滚动条有关的概念很多,但是有三个属性和滚动条的拖动有关,就是:scrollTop、scrollLeft、scrollHeight。其中 scrollHeight 属性,互联网上几乎搜素不到关于它的应用技巧,而我正好需要用到它。

我们现在只探讨和垂直滚动有关的 scrollTop、scrollHeight 属性。

一、滚动条有关属性的正确理解:

假设有以下Html代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
      <div style="height:750px;">
      </div>
</div>

由于内部的div标签高度比外部的长,并且外部的div允许自动出现垂直滚动条,所以用浏览器打开后,可以看到垂直滚动条。滚动条向下拖动一段距离,看到的页面效果如下(右部的a、b是我抓图后,用PS标出来的):

那么,这里的外部div 的scrollTop、scrollHeight 属性到底是什么呢? 有人说,scrollTop等于图中标出的a。scrollHeight 等于外部div的高度500px。其实,都不对。 其实,图中标出的a、b,对我们编程写js代码没有任何具体意义,它仅仅具有象征意义。 实际上,在js代码里,滚动条是被抽象为一个“点”来对待的。scrollHeight其实不是“滚动条的高度”(b),而是表示滚动条需要滚动的高度,即内部div的高度750px。而scrollTop表示滚动条(一个点)当前的位置在750px里占了多少,不是图中标出的a。 这时,我们很叹服Windows的设计者,滚动条设计的如此形象美妙,欺骗了多少头脑简单的鼠标操作员。a和b的距离分别标识滚动条滚动了和需要滚动的距离,它们之间分别有一个对应的关系,但这些不是我们这些开发应用程序的程序员考虑的,是设计操作系统GUI图形接口的程序员考虑的。

2判断垂直滚动条是否到达底部 弄明白了以上的概念,编码其实就比较简单了, 以下是示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>下拉滚动条滚到底部了吗?</title>
      <script language="javascript" src="jquery-1.10.2.js"></script>
      <script language="javascript">
      $(document).ready(function (){
        var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)
        var nScrollTop = 0;   //滚动到的当前位置
        var nDivHight = $("#div1").height();

        $("#div1").scroll(function(){
          nScrollHight = $(this)[0].scrollHeight;
          nScrollTop = $(this)[0].scrollTop;
          if(nScrollTop + nDivHight >= nScrollHight)
            alert("滚动条到底部了");
          });
      });
      </script>
    <body>
    <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
      <div style="background-color:#ccc; height:750px;">IEFF 下测试通过</div>
    </div>
    </body>
    </html>

代码解说: 内部div高度为750,外部div高度为500,所以垂直滚动条需要滚动750-500=250的距离,就会到达底部,参见语句nScrollTop + nDivHight >= nScrollHight。 程序中,在外部div的scroll(滚动)事件中侦测和执行if判断语句,是非常消耗CPU资源的。用鼠标拖拉滚动条,只要有一个像素的变动就会触发该事件。但点击滚动条两头的箭头,事件触发的频率会低得多。所以滚动条的scroll事件要谨慎使用。 本示例判断的是没有水平滚动条的情况,在有水平滚动条时,情况会有细小的变化,所以nScrollTop + nDivHight >= nScrollHight语句中,需要用“>=”比较运算符,而没有水平滚动条的时候,等号“=”就足够了。大家可以实际测试一下。还可以判断水平滚动条是否滚动到头了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163728.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
PHP不显示错误信息的解决方法
在有的服务器上,PHP代码执行出错时,浏览器只会显示500错误,这样不利于程序员定位错误代码。
用户2135432
2023/10/21
6670
PHP-错误处理
​ 语法错误最常见,并且也容易修复。如:代码中遗漏一个分号。这类错误会阻止脚本的执行。
汤清丽
2019/11/03
1.8K0
PHP-错误处理
一起搞懂PHP的错误和异常(一)
在PHP的学习过程中,我们会接触到两个概念,一个是错误,一个是异常。啥玩意?他们不是一个东西嘛?如果接触过Java、C#之类的纯面向对象语言的同学,可能对异常是没有什么问题,毕竟所有的问题都可以try...catch来解决。但是像PHP这种从面向过程发展到面向对象的语言来说,错误和异常就是两个完全不同的东西了。
硬核项目经理
2020/04/26
1.6K0
你还不会处理 PHP 的错误么?PHP 中错误相关知识看这一篇就够了
错误是程序中的故障或错误。它可以有多种类型。由于错误的语法或错误的逻辑,可能会发生错误。这是一种错误或对代码的了解不正确的情况。
用户1418987
2023/11/18
3240
你还不会处理 PHP 的错误么?PHP 中错误相关知识看这一篇就够了
PHP error_reporting() 错误控制函数功能详解
定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别。 函数语法: error_reporting(report_level) 如果参数 level 未指定,当前报错级别将被返回。下面几项是 level 可能的值: 值 常量 描述 1 E_ERROR 致命的运行错误。错误无法恢复,暂停执行脚本。 2 E_WARNING 运行时警告(非致命性错误)。非致命的运行错误,脚本执行不会停止。 4 E_PARSE 编译时解析错误。解析错误只由分析器产生。 8 E_
似水的流年
2018/01/18
7980
php错误处理和异常处理
Error 层次结构 - Throwable (php7) - Error - ArithmeticError - DivisionByZeroError - AssertionError - CompileError - ParseError - TypeError - ArgumentCountError - Exception ... 什么是php错误? 属于php脚本自身的问题,大部分情况是由错误的语法,
友儿
2022/09/11
1.1K0
display_errors与error_reporting,有意思之处「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111809.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
3710
display_errors与error_reporting,有意思之处「建议收藏」
浅谈PHP异常处理
  PHP中的异常的独特性,即PHP中的异常不同于主流语言C++、java中的异常。在Java中,异常是唯一的错误报告方式,而在PHP中却不是这样,而是把所有不正常的情况都视作了错误进行处理。这两种语言对异常和错误的界定存在分歧。什么是异常什么是错误,两种语言的设计者存在不同的观点。
那一叶随风
2018/08/22
1.4K0
浅谈PHP异常处理
PHP与500错误
PHP开发过程中经常会遇到返回500错误的情况,而且body体中也没有任何调试(可用)内容。这个时候你就需要慢慢调试了(打断点,开调试模式等),但如果是现网,这个错误就比较让人抓狂了,既不好打断点也不能开调试模式。但既然是错误,总是会有处理方法,下面就一步步分析500的成因及处理方案。
yaxin
2019/03/07
7.8K0
PHP与500错误
PHP的错误机制总结
PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。
wangxl
2018/07/27
1.3K0
PHP错误异常处理详解
异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法。
黄规速
2022/04/14
2.1K0
一些简单的错误处理函数(一)
在之前的文章中,我们了解过了 PHP 中的异常和错误的区别,也简单地介绍了一些 PHP 中的错误处理函数。这次,我们再开两篇文章,详细的介绍一些 PHP 中错误处理相关的函数。想了解错误和异常相关内容的,请移步:
硬核项目经理
2020/06/30
6270
一些简单的错误处理函数(二)
接下来,我们继续学习 PHP 中的错误处理函数。上次学习过的函数是错误信息的获取、设置、发送等功能,今天学习的内容主要是关于错误的捕获相关的函数。
硬核项目经理
2020/06/30
6270
PHP-错误处理
通过trigger_error产生一个用户级别的 error/warning/notice 信息
cwl_java
2020/03/26
8980
PHP错误实例详解错误级别配置项设置错误级别手动触发PHP错误自定义错误处理器脚本即将关闭前执行的函数
错误级别 在php.ini中可查看PHP的各个错误级别 ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - r
章鱼喵
2018/06/27
1.4K0
PHP中error_reporting()详解
说白了就是PHP页面报错的级别设置,14个等级供你自定义报错的方式,有数字和字符串两种参数的写法,中文说明对应如下:
用户7657330
2020/08/14
5450
PHP 错误和异常处理(上)
在 PHP 5 中,程序错误会被划分为多种级别:https://www.php.net/manual/zh/errorfunc.constants.php,然后可以通过 error_reporting 函数设置报告的错误级别:
学院君
2020/07/24
6570
PHP 错误和异常处理(上)
Laravel Exceptions——异常与错误处理
本文 GitBook 地址:https://legacy.gitbook.com/book/leoyang90/laravel-source-analysis/details
码农编程进阶笔记
2021/07/20
2.1K0
Laravel Exceptions——异常与错误处理
PHP 中的错误处理与异常捕获
在开发任何应用时,错误是不可避免的。无论是由于程序逻辑错误、数据库故障、外部接口问题,还是用户输入不符合预期,错误都会影响应用的正常运行和用户体验。在 PHP 中,处理这些错误的方式至关重要,它直接关系到系统的健壮性、可维护性和可调试性。
繁依Fanyi
2025/01/22
3040
php 抛出异常使用场景
注释:异常应该仅仅在错误情况下使用,而不应该用于在一个指定的点跳转到代码的另一个位置。
全栈程序员站长
2022/07/19
2K0
相关推荐
PHP不显示错误信息的解决方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档