js中clientHeight、offsetHeight、scrollHeight、scrollTop详解「建议收藏」

js中clientHeight、offsetHeight、scrollHeight、scrollTop详解「建议收藏」clientHeight大家对clientHeight都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。offsetHeightIE、Opera认为offsetHeight=clientHeight+滚动条+边框。NS、FF认为offsetH

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

clientHeight

大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight

IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。 NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

 

 代码如下 复制代码

<style type=”text/css” media=”all”>

body {font-size:14px;}

a,a:visited {color:#00f;}

#Div_CnLei {

width:300px;

height:200px;

padding:10px;

border:10px solid #ccc;

background:#eee;

font-size:12px;

}

#Div_CnLei p {margin:0;padding:10px;background:#fff;}

</style>

<script type=”text/javascript”>

function Obj(s){

return document.getElementById(s)?document.getElementById(s):s;

}

function GetClientWidth(o){

return Obj(o).clientWidth;

}

function GetClientHeight(o){

return Obj(o).clientHeight;

}

function GetOffsetWidth(o){

return Obj(o).offsetWidth;

}

function GetOffsetHeight(o){

return Obj(o).offsetHeight;

}

</script>

假设 obj 为某个 HTML 控件。

obj.offsetTop 指 obj 距离上方或上层控件的位置,整型,单位像素。

obj.offsetLeft 指 obj 距离左方或上层控件的位置,整型,单位像素。

obj.offsetWidth 指 obj 控件自身的宽度,整型,单位像素。

obj.offsetHeight 指 obj 控件自身的高度,整型,单位像素。

我们对前面提到的“上方或上层”与“左方或上层”控件作个说明。

例如:

 代码如下 复制代码
<div id=”tool”>
   <input type=”button” value=”提交”>
   <input type=”button” value=”重置”>
</div>

“提交”按钮的 offsetTop 指“提交”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。
“重置”按钮的 offsetTop 指“重置”按钮距“tool”层上边框的距离,因为距其上边最近的是 “tool” 层的上边框。

“提交”按钮的 offsetLeft 指“提交”按钮距“tool”层左边框的距离,因为距其左边最近的是 “tool” 层的左边框。
“重置”按钮的 offsetLeft 指“重置”按钮距“提交”按钮右边框的距离,因为距其左边最近的是“提交”按钮的右边框。

scrollHeight

IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。 NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
scrollTop
“卷”起来的高度值
1.offsetTop :
当前对象到其上级层顶部的距离.
不能对其进行赋值.设置对象到页面顶部的距离请用style.top属性.

2.offsetLeft :
当前对象到其上级层左边的距离.
不能对其进行赋值.设置对象到页面左部的距离请用style.left属性.

3.offsetWidth :
当前对象的宽度.
与style.width属性的区别在于:如对象的宽度设定值为百分比宽度,则无论页面变大还是变小,style.width都返回此百分比,而offsetWidth则返回在不同页面中对象的宽度值而不是百分比值

4.offsetHeight :
与style.height属性的区别在于:如对象的宽度设定值为百分比高度,则无论页面变大还是变小,style.height都返回此百分比,而offsetHeight则返回在不同页面中对象的高度值而不是百分比值

5.offsetParent :
当前对象的上级层对象.
注意.如果对象是包括在一个DIV中时,此DIV不会被当做是此对象的上级层,(即对象的上级层会跳过DIV对象)上级层是Table时则不会有问题.
利用这个属性,可以得到当前对象在不同大小的页面中的绝对位置.

 代码如下 复制代码

<!DOCTYPEhtmlPUBLIC”-//W3C//DTDXHTML1.0Transitional//EN””http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> 
<htmlxmlns=”http://www.w3.org/1999/xhtml”> 
<head> 
<metahttp-equiv=”Content-Type”content=”text/html;charset=utf-8″/> 
<title>RainMan</title> 
<styletype=”text/css”> 
#outer{position:absolute;} 
</style> 
<scripttype=”text/javascript”> 
window.οnlοad=function(){ 
  vartarget=document.getElementById(‘target’); 
  varouter=document.getElementById(‘outer’); 
  alert(target.offsetParent==outer);  //true 
}; 
</script> 
</head> 
<body> 
<divid=”outer”class=”test”> 
  <divid=”inner”> 
    <divid=”target”class=”test”>Target<br/>rainman</div> 
  </div> 
</div> 
</body> 
</html> 
   
<!DOCTYPEhtmlPUBLIC”-//W3C//DTDXHTML1.0Transitional//EN””http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> 
<htmlxmlns=”http://www.w3.org/1999/xhtml”> 
<head> 
<metahttp-equiv=”Content-Type”content=”text/html;charset=utf-8″/> 
<title>RainMan</title> 
<styletype=”text/css”> 
</style> 
<scripttype=”text/javascript”> 
window.οnlοad=function(){ 
  vartarget=document.getElementById(‘target’); 
  alert(target.offsetParent==document.body);  //true 
}; 
</script> 
</head> 
<body> 
<divid=”outer”class=”test”> 
  <divid=”inner”> 
    <divid=”target”class=”test”>Target<br/>rainman</div> 
  </div> 
</div> 
</body> 
</html>

6.scrollLeft :
对象的最左边到对象在当前窗口显示的范围内的左边的距离.
即是在出现了横向滚动条的情况下,滚动条拉动的距离.

 代码如下 复制代码

<input type=”button” value=”点一下” οnclick=”move()”> 
<div id=”d” style=”background-color:#ff9966; position:absolute; left:170px; top:100px;width:300;height:300;overflow:scroll” 
οnclick=”alert(‘offsetLeft:’+this.offsetLeft)”> 
<div style=”height:600;width:600″ οnclick=”alert(‘offsetLeft:’+this.offsetLeft)”></div> 
</div> 
<script language=”javascript”> 
function move() 

var d=document.getElementById(“d”) 
a=eval(20) 
d.scrollLeft+=a 

</script>

7.scrollTop
对象的最顶部到对象在当前窗口显示的范围内的顶边的距离.
即是在出现了纵向滚动条的情况下,滚动条拉动的距离.

clientX, clientY是鼠标当前相对于网页的位置,当鼠标位于页面左上角时clientX=0, clientY=0;
offsetX, offsetY是鼠标当前相对于网页中的某一区域的位置,当鼠标位于页面中这一区域的左上角时offsetX=0, offsetY=0;
screenX, screenY是相对于用户显示器的位置
x,y是鼠标当前相对于当前浏览器的位置

 代码如下 复制代码

function getAbsLeft(e){

var l=e.offsetLeft;
while(e=e.offsetParent) l+=e.offsetLeft;
return l;
}
var e = document.getElementById(“liuxiaofan”);
getAbsLeft(e);

以上主要指IE之中,FireFox差异如下: 
IE6.0、FF1.06+: 
clientWidth = width + padding 
clientHeight = height + padding 
offsetWidth = width + padding + border 
offsetHeight = height + padding + border 
IE5.0/5.5: 
clientWidth = width – border 
clientHeight = height – border 
offsetWidth = width 
offsetHeight = height

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

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

(0)
上一篇 2025年10月21日 下午1:15
下一篇 2025年10月21日 下午1:43


相关推荐

  • 2025最新Chatbox接入DeepSeek完全指南:三种方法轻松配置【保姆级教程】

    2025最新Chatbox接入DeepSeek完全指南:三种方法轻松配置【保姆级教程】

    2026年3月15日
    3
  • Win 10局域网共享打印机设置,以及连接要求“输入网络凭据”问题解决方法总结

    Win 10局域网共享打印机设置,以及连接要求“输入网络凭据”问题解决方法总结Win10 局域网共享打印机设置 以及连接要求 输入网络凭据 问题解决方法总结一 主机电脑设置 1 网络共享设置二 打印机设置 1 连接打印机的电脑主机设置 2 打印机共享设置三 局域网内其他电脑设置四 Win10 系统下连接局域网共享打印机会要求 输入网络凭据 欢迎学习交流 一 主机电脑设置 1 网络共享设置连接打印机的电脑主机设置在设置网络共享打印机之前首先设置好主机的网络设置 开启共享 Win X 调出控制面板选择查看方式为 类别 在网络和

    2026年3月17日
    2
  • Java 认证考试 OCAJP 经验总结

    Java 认证考试 OCAJP 经验总结1. 考证、认证是否有用含金量的话题关于认证考试(无论什么认证)是否有用?这个话题无论是在哪里都有人问。这个问题就好比上大学是否有用吗一样,有的人没上过大学一样年薪百万。认证这种东西需要的时候即有用,不需要的时候就没用。有,并没有什么坏处。说实话个人感觉这证件没什么大用。而自己想考的理由完全是想自我check下,逼自己复习学习基础。如果你是刚毕业的GH或者在校的,手里有些零花钱的可以考虑下,…

    2022年7月8日
    30
  • strsep函数用法

    strsep函数用法1 位置 在 kernel lib string c 中 头文件 linux string h 中 2 函数功能 破坏性分割字符串 返回分割前一部分 后一部分保存在原字符中 3 函数原型 char strsep char constchar strsep Splitastring s Thestringtob ct Thecharacter linux

    2026年3月17日
    2
  • 关于Spring Bean的生命周期

    关于Spring Bean的生命周期一 简介 nbsp nbsp nbsp SpringBean 的生命周期在整个 Spring 中占有很重要的位置 从 BeanFactory 或 ApplicationC 取得的实例为 Singleton 也就是预设为每一个 Bean 的别名只能维持一个实例 而不是每次都产生一个新的对象使用 Singleton 模式产生单一实例 在 spring 中 singleton 属性默认是 true 只有设定为 false 则每次指定别名取

    2026年3月18日
    2
  • java面试题笔试题_外贸函电考试题和答案

    java面试题笔试题_外贸函电考试题和答案声明:有人说,有些面试题很变态,个人认为其实是因为我们基础不扎实或者没有深入。本篇文章来自一位很资深的前辈对于最近java面试题目所做的总结归纳,有170道题目,知识面很广,而且这位前辈对于每个题都自己测试给出了答案,如果你对某个题有疑问或者不明白,可以电脑端登录把题目复制下来然后发表评论,大家一起探讨,也可以电脑端登录后关注我给我发私信,我们一起进步!以下内容来自这位前辈2013年年底的…

    2025年8月30日
    6

发表回复

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

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