html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记…[通俗易懂]

html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记…[通俗易懂]全文参考:https://github.com/iuap-design/blog/issues/38、MDNclientHeight,只读clientHeight可以用公式CSSheight+CSSpadding-水平滚动条的高度(如果存在)来计算。如图,这样一个div,它的clientHeight为95,计算:50(height)+30(padding-top)+30(pad…

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

全文参考:https://github.com/iuap-design/blog/issues/38 、MDN

clientHeight,只读

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

28746d4a29982b045f36c91521e0e8c8.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显示。

a607ca63609db75d091383f60e1fb06e.png(图1)

236b6a589749fd2beffb62b786f44683.png(图2)

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

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

scrollTop,可写

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

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

e1df0d53352c798491913be2b1f25418.png

aefc075fff325b9695bd1d114ac2f63b.png

07b2aaffcac0b708273851bdd97a4fed.png

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

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

7d104ceb7ed775dabc087ba9c91abf44.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等属性学习笔记的文章就介绍到这了,更多相关JavaScript scrollTop scrollHeight offsetTop offsetHeight内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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

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

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


相关推荐

  • 项目从 tomcat7部署到tomcat8「建议收藏」

    项目从 tomcat7部署到tomcat8「建议收藏」这段时间将一个老项目从tomcat7部署到tomcat8上,期间遇到的典型问题。接下来我会介绍下整个升级过程和在升级中遇到的问题。首先要装个jdk8+,因为开发环境用的是eclipse,还要搞个兼容tomcat8的eclipse.新下的tomcat8里是自带20几个jar的,这是要留着的不能直接拿来tomcat7的lib就用。因为老项目要依赖的jar都放在了tomcat下没有用maven,所以拿来…

    2022年7月18日
    28
  • 后盾人教程_最专业的后盾

    后盾人教程_最专业的后盾CSS3系列课程开课了,老铁快上车吧一引用CSS差别link标签:外部style标签:内联style属性:嵌入式注释:/**/结尾:分号,不能省略css导入其他css样式:@i

    2022年8月4日
    7
  • 将图像转换为8位通道_imagej像素和毫米转换

    将图像转换为8位通道_imagej像素和毫米转换一背景遥感图像一般像素深度比较高,基本的就是unit16了,但是如果想在OpenCV中正确使用,而且不丢失数据RGB三通道信息,就需要转为unit8才能进行其他分析。二分析unit16的图像最大值为216-1=65535,而OpenCV中的图像最大值为28-1=255,当大于255时会自动变为255,这样数据信息就丢失了。下面代码采用的方式是线性缩放,将0到65535的数值线性缩…

    2025年12月13日
    5
  • fftw_fftw3

    fftw_fftw3http://wenku.baidu.com/link?url=3TS6UqnYfVxGpVBfJIIgxjjcXCKuW9NvklxfBLZaIdWJhY0HrpUSKyyuIHsNI2s4F9tSUOhP7pl7n5PLlSFvWqQdr6XvtpejqQenhJHJ9N7

    2025年8月19日
    5
  • navicatfor激活码(注册激活)

    (navicatfor激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~2K…

    2022年4月1日
    866
  • fastdfs 上传文件(nginx文件上传服务器)

    一、FastDFS介绍FastDFS开源地址:https://github.com/happyfish100参考:分布式文件系统FastDFS设计原理参考:FastDFS分布式文件系统1.简介FastDFS是一个开源的高性能分布式文件系统(DFS)。它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(…

    2022年4月16日
    141

发表回复

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

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