html 滚动条 scrolltop scrollheight,浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight…

html 滚动条 scrolltop scrollheight,浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight…浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight发布时间:2020-07-1709:27:20来源:亿速云阅读:223作者:小猪小编这次要给大家分享的是浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这…

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

浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight

发布时间:2020-07-17 09:27:20

来源:亿速云

阅读:223

作者:小猪

小编这次要给大家分享的是浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

clientHeight,只读

clientHeight可以用公式 CSS height + CSS padding – 水平滚动条的高度 (如果存在) 来计算。

a771234788d382d937cd74221b4c100c.png

如图,这样一个div,它的clientHeight为95,计算:50(height)+30(padding-top)+30(padding-bottom)-15(经测量滚动条高度就是15)=95

clientTop,只读

一个元素顶部边框的宽度(以像素表示)。嗯。。就只是border-top-width

类似的属性还有一个clientLeft,顾名思义……

offsetHeight,只读

元素的offsetHeight是一种元素CSS高度的衡量标准,包括元素的边框、内边距和元素的水平滚动条(如果存在且渲染的话),是一个整数。

还是上面的图,div的offsetHeight为112。计算:50+60(上下内边距)+2(上下边框)=112

offsetTop,只读

HTMLElement.offsetParent是一个只读属性,返回一个指向最近的包含该元素的定位元素。如果没有定位的元素,则offsetParent为最近的table,table cell或根元素(标准模式下为html;quirks 模式下为body)。当元素的style.display设置为 “none” 时,offsetParent返回null。

它返回当前元素相对于其offsetParent元素的顶部的距离。

还是上面那张图,div的offsetTop为20,因为margin-top是20,距离html顶部的距离是20…

scrollHeight,只读

实话,这么久了,竟然一直搞错这个scroll相关属性,其实它描述的是outer的属性,而窝一直取inner的属性值,难怪scrollTop一直是0。。。

Document

#outer {

margin: 100px 50px;

background: url(http://images.cnblogs.com/cnblogs_com/wenruo/873448/o_esdese.jpg);

height: 100px;

width: 50px;

padding: 10px 50px;

overflow: scroll;

}

#inner {

height: 200px;

width: 50px;

background-color: #d0ffe3;

}

因为限制了父元素的高度,所以不能全部显示子元素,设置了overflow之后,可以通过滚动条的形式滑动查看子元素。效果如图1,如果没有限制父元素的高度,那么效果将如图2显示。

15387876114c243d556ac326e94593db.png(图1)

123b47918da2644f27afd50c080a408d.png(图2)

scrollHeight就是图2的高度,没有高度限制时,能够完全显示子元素时的高度(clientHeight)。

所以这里scrollHeight为220,计算:200+10+10=220

scrollTop,可写

是这些元素中唯一一个可写可读的。

下面的图是用微信截图随便画的:D(不小心混入了一个光标。。

50a495f8cd909ac205402e55883d45bb.png

3bf86564254eb61ba53c9716fa264fed.png

88bd9800f4c2a160eb5685df7f13bd13.png

所以当滚动条在最顶端的时候,scrollTop=0,当滚动条在最低端的时候,scrollTop=115

这个115怎么来的(滚动条高度是15,我量的),见下图。(实为我主观臆测,不保证准确性。。。_(:з」∠)_

8bc103fcd2a773931e9b8317b53bd05c.png

scrollTop是一个整数。

如果一个元素不能被滚动,它的scrollTop将被设置为0。

设置scrollTop的值小于0,scrollTop被设为0。

如果设置了超出这个容器可滚动的值,scrollTop会被设为最大值。

判定元素是否滚动到底:

element.scrollHeight – element.scrollTop === element.clientHeight

返回顶部

element.scrollTop = 0

一个简单的返回顶部的时间,一个需要注意的地方是,动画是由快到慢的。

返回顶部

#outer { height: 100px; width: 100px; padding: 10px 50px; border: 1px solid; overflow: auto; }

返回顶部

function toTop(ele) {

// ele.scrollTop = 0;

let dy = ele.scrollTop / 4; // 每次更新scrollTop改变的大小

if (ele.scrollTop > 0) {

ele.scrollTop -= Math.max(dy, 10);

setTimeout(() => {

toTop(ele, dy);

}, 30);

}

}

// 初始化

window.onload = () => {

for (let i = 0; i < 233; i++) inner.innerText += `第${i}行\n`;

}

看完这篇关于浅谈JavaScript中scrollTop、scrollHeight、offsetTop、offsetHeight的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一步设置Intellij IDEA 热部署处理方法

    一步设置Intellij IDEA 热部署处理方法  在IntellijIDEA中默认是关闭了自动编译的,可以按照如下1步设置开启自动编译:1.IDEA开启项目自动编译,进入设置,Build,Execut,Deployment-&gt;Compiler勾选中左侧的BuildProjectautomatically   …

    2022年6月1日
  • REST API和SOAP API区别[通俗易懂]

    REST API和SOAP API区别[通俗易懂]RESTAPI优点:1.轻量级的解决方案,不必向SOAP那样要构建一个标准的SOAPXML。2.可读性比较好:可以把URL的名字取得有实际意义。3.不需要SDK支持:直接一个Http请求就可以,但是SOAP则可能需要使用到一些Webservice的类库(例如Apache的Axis)缺点:1.复杂的应用中,URL可能非常长,而且不容易解析。SOAPAPI优点:1.定…

    2022年7月13日
  • 海龟图c语言编程,【编程课堂】海龟作图

    海龟图c语言编程,【编程课堂】海龟作图原标题:【编程课堂】海龟作图0、前言turtle是python内置的一个比较有趣味的模块,俗称海龟作图,它是基于tkinter模块打造,提供一些简单的绘图工具,海龟作图最初源自20世纪60年代的Logo编程语言,之后一些很酷的Python程序员构建了turtle库,让其他程序员只需要importturtle,就可以在Python中使用海龟作图。1、基本功能介绍…

    2022年6月28日
  • QDialog 简介

    转载自https://blog.csdn.net/jia666666/article/details/81539733 前言为了更好的实现人机交互,比如window和linux等系统均会提供一系列的标准对话框来完成特定场景下的功能,比如选择字号大小。字体颜色等,在PyQt5中定义了一系列的标准对话框类,让使用者能够方便快捷地通过各个类完成字号大小,字体颜色以及文件的选择等QD…

    2022年4月9日
  • php vld_phpenv使用教程

    php vld_phpenv使用教程1、查看本地是否已经安装了vld扩展,如果没有任何输出,那就准备安装吧![root@taiwu~]#/home/work/lib/php5.6.7/bin/php-m|grepvld2、去官方网站下载vld(http://pecl.php.net/package/vld),找到最新版本,右键复制地址链接就能得到下载地址,通过浏览器直接下载也行。我是通过wget命令在centos的命…

    2022年10月30日
  • React 路由—基本使用「建议收藏」

    React 路由—基本使用「建议收藏」一:安装运行npmireact-router-dom安装react路由依赖项创建一个App.js根组件,并在根组件中,按需导入路由需要的三个组件HashRouter:表示路由的包裹

    2022年8月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号