js中height、clientHeight、scrollHeight、offsetHeight区别

来源:互联网 发布:机构交易内部软件 编辑:程序博客网 时间:2024/06/05 19:49

 

 

我们来实现test中的onclick事件

   function justAtest()
    
{
        var test
= document.getElementById("test");
        var test2
=document.getElementById("test2")
        var test3
=document.getElementById("test3")
        var test4
=document.getElementById("test4");     
        alert(test4.style.height); 
        alert(test3.style.height);    
        alert(test2.style.height)
        alert(test.style.height);      
        alert(document.body.style.height) 
     }


height :其实Height高度跟其他的高度有点不一样,在javascript中它是属于对象的style对象属性中的一个成员,它的值是一个字符类型的,而另外三个高度的值是int类型的,它们是对象的属性.因此这样document.body.height就会提示undenifine,而必须写成document.body.style.height
上面的脚本将依次弹出700px,550px,600px,500px,1000px.height是最简单的了,不必去考虑是否有滚动条及边框等.因此也不做多解释了.
然后我们将脚本换下

     function justAtest()
    
{
        var test
= document.getElementById("test");
        var test2
=document.getElementById("test2")
        var test3
=document.getElementById("test3")
        var test4
=document.getElementById("test4");     
        alert(test4.clientHeight); 
        alert(test3.clientHeight);    
        alert(test2.clientHeight)
        alert(test.clientHeight);      
        alert(document.body.clientHeight) 
     }

运行后火狐的结果为:700,550,583,483,1000
           IE的结果为:700 ,550,583,483,1000
IE与火狐下的运行结果是一致的.下面来看下clientHeight的定义.
clientHeight:可见区域的宽度,不包括boder的宽度,如果区域内带有滚动条,还应该减去横向滚动条不可用的高度,正常的是17px,其实就是滚动条的可滚动的部分了,其实clientHeight与height的高度差不多,如果不带滚动条的话他们的值都是一样的,如果带有滚动条的话就会比height值少17px;火狐与IE下均为一致.
接着我们来看scrollHeight

 function justAtest()
    
{
        var test
= document.getElementById("test");
        var test2
=document.getElementById("test2")
        var test3
=document.getElementById("test3")
        var test4
=document.getElementById("test4");     
        alert(test4.scrollHeight); 
        alert(test3.scrollHeight);    
        alert(test2.scrollHeight)
        alert(test.scrollHeight);      
        alert(document.body.scrollHeight) 
     }

运行后火狐的结果为:700,552,700,602,1002
           IE的结果为: 15, 15 , 700,602, 552
scrollHeight:这个属性就比较麻烦了,因为它们在火狐跟IE下简直差太多了..
在火狐下还很好理解,它其实就是滚动条可滚动的部分还要加上boder的高度还要加上横向滚动条不可用的高度,与clientHeight比起来,多个border的高度跟横向滚动条不可用的高度.

在IE中 scrollHeight确是指这个对象它所包含的对象的高度加上boder的高度和marging,如果它里面没有包含对象或者这个对象的高度值未设置,那么它的值将为15
最后我们来看offsetHeight

     function justAtest()
    
{
        var test
= document.getElementById("test");
        var test2
=document.getElementById("test2")
        var test3
=document.getElementById("test3")
        var test4
=document.getElementById("test4");     
        alert(test4.offsetHeight); 
        alert(test3.offsetHeight);    
        alert(test2.offsetHeight)
        alert(test.offsetHeight);      
        alert(document.body.offsetHeight) 
     }


offsetHeight:
FF:700,552,602,502,1002
IE:700,552,602,502,1002
这个属性好办,因为在测试中IE跟火狐的结果是一样的,均表示是自身的高度,如果有设置boder的话还应该加上boder的值,因为除了test4这个div外,其他的div均有设置border=1px,所以552=550+2,其他的均一样.

嘿嘿,综上所述,clientHeight与height的区别是如果有滚动条时应减去滚动条的17px不可用部分,offsetHeight与Height的区别是增加了boder的高度,ScrollHeihgt与Height的区别是火狐下与offsetHeight一致,IE下如上所述.

相信你了解了这个,对width,clientWidth,scrollWidth,offsetWidth已经不陌生了吧,只不过一个是长一个是宽的问题了.

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 住房公积金咨询电话 泉州市住房公积金个人查询 南充住房公积金查询个人账户 住房公积金电话号码 银川住房公积金查询 淮南住房公积金查询个人账户 毕节住房公积金查询 邯郸市住房公积金管理中心 渭南市住房公积金管理中心 连云港住房公积金 临沂住房公积金查询个人账户 南充住房公积金 住房公积金密码 运城住房公积金查询 住房公积金查询电话 住房公积金热线 昆明市住房公积金管理中心 乌鲁木齐住房公积金查询 玉林市住房公积金管理中心 南宁住房公积金网 宜宾市住房公积金管理中心 重庆住房公积金 银川住房公积金查询个人账户 洛阳住房公积金查询 住房公积金卡 东莞住房公积金查询 南京住房公积金管理中心 成都住房公积金 广西住房公积金查询 广西区直住房公积金查询入口 哈尔滨住房公积金管理中心 武汉住房公积金查询个人账户 重庆市住房公积金管理中心 渭南住房公积金查询 咸阳市住房公积金管理中心 宁德住房公积金查询 苏州住房公积金管理中心 太原住房公积金 萍乡市住房公积金个人查询 深圳住房公积金查询余额 长春市住房公积金网