原文地址为: scrollTop是什么及用法说明

scrollTop属性是什么?

有些情况下,“元素中内容”的高度会超过“元素本身”的高度, scrollTop指的是“元素中的内容”超出“元素上边界”的那部分的高度。

通过一个实例演示来讲述scrollTop属性是什么

下面的演示中,外层元素的高度值是200px,内层元素的高度值是300px。很明显,“外层元素中的内容”高过了“外层元素”本身.当向下拖动滚动条时,有部分内容会隐没在“外层元素的上边界”之外,scrollTop就等于这部分“不可见的内容”的高度。

演示:(拖动滚动条,可以看到scrollTop值的变化)

这些文字显示在内层元素中。

scrollTop值是:

上面演示中可滚动元素的原码:

<div style="width:200px;height:200px;background-color:#999999;overflow:auto;" id="外层元素"><div style="width:100px;height:300px;background-color:#FFFF00;" id="内层元素"> 这些文字显示在内层元素中。</div>
</div>

解释:

  • 内层元素的高度值300px > 外层元素的高度值200px,因此“外层元素的内容”(也就是“内层元素”)无法完全显示,而外层元素把overflow设置为auto,因此外层元素的右侧会出现竖直滑动条
  • 初始状态下,“内层元素的上边界”和“外层元素的上边界”重合,没有任何内容超过“外层元素的上边界”,此时scrollTop属性的值为0。
  • 当向下拖动滚动块时,超过“外层元素的上边界”的内容会逐渐增多,scrollTop值就等于这些超出部分的高度。
  • 当拖动滚动块到最底部时,“内层元素的下边界”和“外层元素的下边界”重合,此时,超过“外层元素的上边界”的内容的高度=300px-200px=100px,也就是此时的scrollTop值。

通过js代码来读取,写入scrollTop的值

注意:scrollTop的使用方式是element.scrollTop,而不是element.style.scrollTop

通过js代码来读取scrollTop的值

上面的演示实例中,其实已经用到了scrollTop的读取操作。具体来说就是,在拖动滚动条的过程中,会读取此时的scrollTop的值,并在下方文字中显示出来。

上面的演示实例的完整原码:

<div style="width:200px;height:200px;background-color:#999999;overflow:auto;" id="外层元素"><div style="width:100px;height:300px;background-color:#FFFF00;" id="内层元素"> 这些文字显示在内层元素中。</div>
</div><p>scrollTop值是:<span id="显示外层元素的scrollTop值"></span></p><script type="text/javascript">var div_外层元素 = document.getElementById("外层元素");div_外层元素.onscroll=读取外层元素的scrollTop值并显示出来;//注册onscroll事件处理函数。当拖动滚动条时,会产生onscroll事件var span_显示外层元素的scrollTop值 = document.getElementById("显示外层元素的scrollTop值");//onscroll事件的处理函数function 读取外层元素的scrollTop值并显示出来() {span_显示外层元素的scrollTop值.innerHTML=div_外层元素.scrollTop;//读取“外层元素”此时的scrollTop的值并显示出来}读取外层元素的scrollTop值并显示出来();//页面加载完成后,执行一次此函数。显示最初的scrollTop值,此时的值为0
</script>

解释:

  • 当拖动“外层元素的滚动条”时,会产生onscroll事件。为这个事件注册一个名为读取scrollTop的值并显示出来的处理函数
  • 读取scrollTop的值并显示出来这个事件处理函数中,通过外层元素_div.scrollTop得到“外层元素”当时的scrollTop的值,并显示在页面上。

通过js代码来设置scrollTop的值

对上面的演示例子作一些修改。添加功能:通过js语句来设置scrollTop的值

示例:

这些文字显示在内层元素中。

scrollTop值是:

把scrollTop设为50把scrollTop设为500

输入scrollTop的值:确定

上面的演示实例的完整原码:

<div style="width:200px;height:200px;background-color:#999999;overflow:auto;" id="外层元素A"><div style="width:100px;height:300px;background-color:#FFFF00;" id="内层元素A">这些文字显示在内层元素中。</div>
</div><p>scrollTop值是:<span id="显示外层元素A的scrollTop值"></span></p><p><button type="button" onclick="div_外层元素A.scrollTop=50;">把scrollTop设为50</button><button type="button" onclick="div_外层元素A.scrollTop=500;">把scrollTop设为500</button>
</p><p>输入scrollTop的值:<input type="text" id="输入scrollTop的值" value="" /><button type="button" onclick="设置scrollTop的值()" name="设置scrollTop的值">确定</button>
</p><script type="text/javascript">var div_外层元素A = document.getElementById("外层元素A");div_外层元素A.onscroll=读取外层元素A的scrollTop值并显示出来;//注册onscroll事件处理函数。当拖动滚动条时,会产生onscroll事件var span_显示外层元素A的scrollTop值 = document.getElementById("显示外层元素A的scrollTop值");//onscroll事件的处理函数function 读取外层元素A的scrollTop值并显示出来() {span_显示外层元素A的scrollTop值.innerHTML=div_外层元素A.scrollTop;//读取“外层元素”此时的scrollTop的值并显示出来}读取外层元素A的scrollTop值并显示出来();//页面加载完成后,执行一次此函数。显示最初的scrollTop值,此时的值为0div_外层元素A.scrollTop = 10;//通过js语句来设置scrollTop的值,本条语句会触发onscroll事件,使得"读取外层元素A的scrollTop值并显示出来"函数执行一次。function 设置scrollTop的值()
{if("" != document.getElementById("输入scrollTop的值").value)div_外层元素A.scrollTop = document.getElementById("输入scrollTop的值").value;else alert("请输入一个数值");}
</script>

解释:

  • 形如div_外层元素A.scrollTop = 12345;的赋值语句会触发onscroll事件,使得读取scrollTop的值并显示出来函数执行一次
  • 上一个例子中已经提到:当拖动滚动条到最底部时,scrollTop=300px-200px=100px,这是scrollTop能够取的最大值。当用更大的值赋给scrollTop时,scrollTop会自动把它转变为100。例如上面的“把scrollTop设为500”按钮,scrollTop会把500转变为100。

得到body元素的scrollTop

body元素的scrollTop指的是超出“浏览器窗口上边界”的内容的高度

当html文档头部包含有“文档类型声明”时,需要用document.documentElement.scrollTop获得正确的值,而document.body.scrollTop的值为0

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script type="text/javascript">alert("document.documentElement.scrollTop:"+document.documentElement.scrollTop //正确的值+"document.body.scrollTop:"+document.body.scrollTop //值为0);
</script>

当html文档头部不包含任何“文档类型声明”时,需要用document.body.scrollTop获得正确的值,而document.documentElement.scrollTop的值为0

下面定义的get_scrollTop_of_body()函数可以处理这种差异,得到body元素的scrollTop值

function get_scrollTop_of_body(){
var scrollTop;
if(typeof window.pageYOffset != 'undefined'){scrollTop = window.pageYOffset;
}
elseif(typeof document.compatMode != 'undefined' &&document.compatMode != 'BackCompat'){scrollTop = document.documentElement.scrollTop;}else if(typeof document.body != 'undefined'){scrollTop = document.body.scrollTop;}
return scrollTop;
}

转载请注明本文地址: scrollTop是什么及用法说明

scrollTop是什么及用法说明相关推荐

  1. Js中 关于top、clientTop、scrollTop、offsetTop的用法

    2019独角兽企业重金招聘Python工程师标准>>> Js中 关于top.clientTop.scrollTop.offsetTop的用法 网页可见区域宽: document.bo ...

  2. 「查缺补漏」高频考点浏览器面试题

    前言 想要成为一名合格的前端工程师,掌握相关浏览器的工作原理是必备的,这样子才会有一个完整知识体系,要是「能参透浏览器的工作原理,你就能解决80%的前端难题」. 这篇梳理的话,更多的是对浏览器工作原理 ...

  3. scrollTop 用法讲解

    scrollTop() 定义和用法 scrollTop() 方法设置或返回被选元素的[垂直滚动条位置]. Note: 当滚动条位置位于最顶部时,位置是0: 当用于返回位置时:     该方法返回 第一 ...

  4. scrollTop 用法说明

    scrollTop属性是什么? 有些情况下,"元素中内容"的高度会超过"元素本身"的高度, 下面的演示中,外层元素的高度值是200px,内层元素的高度值是300 ...

  5. document.body.scrollTop用法

    网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offs ...

  6. 浏览器高度 document.body.scrollTop用法

    网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offs ...

  7. js中关于scrolltop.offsettop等距离用法的介绍

    页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offse ...

  8. javascript滚动到顶部scrollTop用法

    首先了解下列相关属性 网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: documen ...

  9. top在html5里什么意思,html中的scrolltop是什么意思

    scrolltop是jQuery中的一个方法,它可以设置 元素中滚动条的垂直偏移量,基本的用法是: scrollTop() 方法返或设置匹配元素的滚动条的垂直位置. scroll top offset ...

最新文章

  1. 线程池的原理及实现(转)
  2. 【Scratch】青少年蓝桥杯_每日一题_5.07_猜数字
  3. 文件没有图标,无法打开(以pdf为例)
  4. hdu1754(简单线段树)
  5. 多媒体基础:动画和视频知识笔记
  6. DBShop电子商务系统
  7. Maven 动态Web的创建 及 Tomcat的启动
  8. Flex Gumbo中如何自定义HSlider数据Tip样式的例子
  9. python规范模块和包
  10. oneproxy出现2103错误代码解决方案
  11. 体脂率在线计算机,体脂率(BFR)计算器
  12. 账结法 表结法 两种财务会计处理方法
  13. 微软发布了最新的Sync Framework 2.0 CTP2
  14. 【林林js笔记】克隆数组的几种方法以及浅克隆深克隆误区
  15. 微信答题竞赛的小程序
  16. 【JAVA学习路径 表述(超级详细的Java知识宇宙)】
  17. ctfshow_密码3
  18. 208计算机领域,中医药大学-计算机基础208版-1-7次作业.doc
  19. 金融直播方兴未艾,理财直播探索新道路
  20. 夜光 :AGV 导航策略总体方案设计

热门文章

  1. 蔬菜水果中的健康颜色密码
  2. RocksDB的Compaction : Leveled Compaction 和 Universal Compaction
  3. 新手在Visual Studio Code使用go语言打印hello wrod时可能遇到的问题的解决方案 。
  4. burp基于表单的暴力破解
  5. 强制感恩无异于剥夺受助者自尊(摘自华龙网)
  6. 哔哩哔哩电脑版怎么缓存视频?
  7. ios获取手机序列号_IOS 手机序列号 手机名称 版本等的获取
  8. mac 连接linux共享文件夹,Mac连接远程Linux管理文件(samba)
  9. CSS中appearance属性的使用方法
  10. [UITabBar appearance]不生效