这些高度相信很多同学都搞不清楚吧。这里我通过本地测试,发现了区别。

以聊天窗口为例。

元素(class='content')高度444px,其中上下padding分别是10px,margin为0。距离最近的一个定位的父元素的上边距是60px。

这里,在控制台打印出各个高度值:

var c =document.getElementsByClassName('content')[0];
console.log(c.offsetTop,c.offsetHeight,c.clientHeight,c.scrollHeight,c.scrollTop);

默认情况下:

60 464 464 464 0

加了border(1px)之后

60 464 462 462 0

缩小窗口:

60 339 337 337 0

内容超出一面,出现滚动条:

60 464 464 710 246

内容超出一面,出现滚动条,且加了border(1px)之后:

60 464 462 710 246

由此可得出结论:

offsetTop 距离最近定位父元素的上外边距(margin)。

此属性可以获取元素的上外缘距离最近采用定位父元素内壁的距离,如果父元素中没有采用定位的,则是获取上外边缘距离文档内壁的距离。所谓的定位就是position属性值为relative、absolute或者fixed。

offsetHeight 是自身元素的高度(可视区):元素内容+内边距(padding)+边框(border),缩小浏览器窗口,这个值会改变

clientHeight 是自身元素的高度(可视区):元素内容+内边距(padding),缩小浏览器窗口,这个值会改变

scrollHeight = 容器元素的上下内边距(padding)之和 + 内容所占据的宽度(含隐藏的),值最小等于元素的clientHeight属性值。

scrollTop = 没有滚动条时是0。为scrollHeight - offsetHeight的差。

回到示例,想让有消息来了,自动滚动最后一条消息,做法是:

var c =document.getElementsByClassName('content')[0];
c.scrollTop = c.scrollHeight - c.offsetHeight;

当然,这里的offsetHeight不减去也是可以的。

其它的offsetLeft,offsetWeight,clientWidth,scrollWidth,scrollLeft同理。

jQuery里也有获取高度的方法:

innerHeight()获取第一个匹配元素内部区域高度(包括补白、不包括边框)。同clientHeight

outerHeight([options])获取第一个匹配元素外部高度(默认包括补白和边框)。同offsetHeight

scrollTop([val]) 同scrollTop

offset()返回{left: 0, top: 60, width: 587, height: 464},对应offsetLeft,offsetTop,offsetWidth,offsetHeight

height()获取或者设置offsetHeight

position() 获取匹配元素相对父元素的偏移

参考:

scrollTop、offsetHeight和offsetTop等属性用法详解-蚂蚁部落

http://www.softwhy.com/forum.php?mod=viewthread&tid=8298

offsetTop,offsetHeight,clientHeight,scrollHeight,scrollTop区别的更多相关文章

  1. 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究

    我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...

  2. 彻底搞清楚DOM元素的height,offsetHeight,clientHeight,scrollHeight

    测试用例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  3. [DOM基础]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等属性的解释

    由于经常搞混这几个属性,所以查找资料总结一下,方便以后翻出来温习. 一.偏移量-以offset开头的 1.offsetHeight:元素在垂直方向上占用的空间大小,像素.包括元素的高度.可见的水平滚动 ...

  4. offsetHeight,clientHeight,scrollHeight,offsetY等属性的理解

    el.offsetHeight = height + padding + border(滚动条是在边框内的,自然也包括在内) el.clientHeight = 可视化看到的高度 (就是content ...

  5. document.documentElement与body下clientHeight,scrollHeight等区别

    本次说明仅在chrom环境下,ie等其他浏览器可能不同 1获取显示屏高度(pc和移动端,屏幕分辨率px) window.screen.height => 这个好理解,不多说. 2获取浏览器可视窗 ...

  6. jquery 对象的 height、innerHeight、outerHeight 的区别以及DOM 元素的 clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop

    前言:jquery 对象的 height.innerHeight.outerHeight,还有 DOM 元素的 clientHeight.offsetHeight.scrollHeight.offse ...

  7. JS clientHeight,scrollHeight,offsetHeight,scrollTop,offsetTop概念

    JS滚动页面到某一位置时触发指定事件能够增强用户体验或是提高性能,其中使用最多的场景是加载更多,当鼠标滚动至页面下方时,自动加载下一页的内容.另一个常用的场景是当用户滚动至页面某一地方时,页面会给出提 ...

  8. offsetTop/offsetHeight scrollTop/scrollHeight 的区别

    offsetTop/offsetHeight   scrollTop/scrollHeight  这几个属性困扰了我N久,这次一定要搞定. 假设 obj 为某个 HTML 控件. obj.offset ...

  9. 理解clientX、clientY、offsetLeft、event.offsetTop、offsetWidth、offsetHeight、clientWidth、clientHeight、scrollTop、scrollHeight

    一.clientX和clientY 事件发生时,鼠标距离浏览器的可视区域的X.Y轴的位置,不包含滚动条的区域的部分.就算是页面进行了滚动,鼠标的坐标值还是参考可视区域的. 二.offsetLeft和o ...

随机推荐

  1. 读写SD

    public class SD_Files_RW extends Activity implements OnClickListener{ private String Text_of_input; ...

  2. 使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法

    1 问题提出 1.1 概述 提高ArcGIS server并发性能的方法很多,本文讨论在用户硬件足够强大的情况下(主要是内存足够大),使用内存模拟硬盘来提高数据的读取效率,以达到提高ArcGIS se ...

  3. 【转】简易smtp调用类

    用PHP发邮件的一个类,无需验证SMTP主机,类代码你可以不用管,只要按照后面的使用方法操作就行,这个类要先保存成一个php文件,文件名就叫smtp.php吧,下面是该文件代码: <?php c ...

  4. sql server 分布式查询 和 主从服务器搭建

    1. 8K 对应的SQL语句限制  select  *  from openquery (recei    连接服务器名称 执行的sql 语句放在   SELECT @@SERVERNAME  在本地 ...

  5. SQL事物隔离级别

    标准SQL定义了4个隔离级别 Read uncommitted 未提交读 Read committed 已提交读 Repeatable read 可重复读 Serializable 可序列化 基本语法 ...

  6. bochs上网及配置

    下载并安装bochs2.6:(不能是更高版本) 创建bochs 时注意勾选Dlx linux Demo,但是其文件bochsrc.bxrc中无Ne2k网卡选项,这一段要自己添加,详情见后. 先确定我们 ...

  7. MongoDB学习笔记-05 聚合

    MongoDB除了基本查询功能之外,还有强大的聚合工具,其中包括:count().distinct().group().mapreduce. 计数函数count count是最简单的聚合工具,用于返回 ...

  8. 基于Axure的快速原型方法

    Axure是一个专业的快速原型设计工具,让负责定义需求和规格.设计功能和界面的专家能够快速创建应用软件或Web网站的线框图.流程图.原型和规格说明文档.作为专业的原型设计工具,它能快速.高效的创建原型 ...

  9. cowboy学习笔记(安装与部署)

    安装cowboy,参照官方文档:http://ninenines.eu/docs/en/cowboy/1.0/guide/getting_started/ 添加依赖库:在makefile中添加,会自动 ...

  10. [XAF] How to represent an enumeration property via a drop-down box with check boxes

    https://www.devexpress.com/Support/Center/Example/Details/E689