天天看點

JS中height、clientHeight、scrollHeight、offsetHeight差別

JS中height、clientHeight、scrollHeight、offsetHeight差別

我們來實作test中的onclick事件

JS中height、clientHeight、scrollHeight、offsetHeight差別

   function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.style.height); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.style.height);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.style.height)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.style.height);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.style.height) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

height :其實Height高度跟其他的高度有點不一樣,在javascript中它是屬于對象的style對象屬性中的一個成員,它的值是一個字元類型的,而另外三個高度的值是int類型的,它們是對象的屬性.是以這樣document.body.height就會提示undenifine,而必須寫成document.body.style.height

上面的腳本将依次彈出700px,550px,600px,500px,1000px.height是最簡單的了,不必去考慮是否有滾動條及邊框等.是以也不做多解釋了.

然後我們将腳本換下

JS中height、clientHeight、scrollHeight、offsetHeight差別

     function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.clientHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.clientHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.clientHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.clientHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.clientHeight) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

運作後火狐的結果為:700,550,583,483,1000

           IE的結果為:700 ,550,583,483,1000

IE與火狐下的運作結果是一緻的.下面來看下clientHeight的定義.

clientHeight:可見區域的寬度,不包括boder的寬度,如果區域内帶有滾動條,還應該減去橫向滾動條不可用的高度,正常的是17px,其實就是滾動條的可滾動的部分了,其實clientHeight與height的高度差不多,如果不帶滾動條的話他們的值都是一樣的,如果帶有滾動條的話就會比height值少17px;火狐與IE下均為一緻.

接着我們來看scrollHeight

JS中height、clientHeight、scrollHeight、offsetHeight差別

 function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.scrollHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.scrollHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.scrollHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.scrollHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.scrollHeight) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

運作後火狐的結果為:700,552,700,602,1002

           IE的結果為: 15, 15 , 700,602, 552

scrollHeight:這個屬性就比較麻煩了,因為它們在火狐跟IE下簡直差太多了..

在火狐下還很好了解,它其實就是滾動條可滾動的部分還要加上boder的高度還要加上橫向滾動條不可用的高度,與clientHeight比起來,多個border的高度跟橫向滾動條不可用的高度.

在IE中 scrollHeight确是指這個對象它所包含的對象的高度加上boder的高度和marging,如果它裡面沒有包含對象或者這個對象的高度值未設定,那麼它的值将為15

最後我們來看offsetHeight

JS中height、clientHeight、scrollHeight、offsetHeight差別

     function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.offsetHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.offsetHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.offsetHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.offsetHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.offsetHeight) 

JS中height、clientHeight、scrollHeight、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已經不陌生了吧,隻不過一個是長一個是寬的問題了.

我們來實作test中的onclick事件

JS中height、clientHeight、scrollHeight、offsetHeight差別

   function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.style.height); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.style.height);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.style.height)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.style.height);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.style.height) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

height :其實Height高度跟其他的高度有點不一樣,在javascript中它是屬于對象的style對象屬性中的一個成員,它的值是一個字元類型的,而另外三個高度的值是int類型的,它們是對象的屬性.是以這樣document.body.height就會提示undenifine,而必須寫成document.body.style.height

上面的腳本将依次彈出700px,550px,600px,500px,1000px.height是最簡單的了,不必去考慮是否有滾動條及邊框等.是以也不做多解釋了.

然後我們将腳本換下

JS中height、clientHeight、scrollHeight、offsetHeight差別

     function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.clientHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.clientHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.clientHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.clientHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.clientHeight) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

運作後火狐的結果為:700,550,583,483,1000

           IE的結果為:700 ,550,583,483,1000

IE與火狐下的運作結果是一緻的.下面來看下clientHeight的定義.

clientHeight:可見區域的寬度,不包括boder的寬度,如果區域内帶有滾動條,還應該減去橫向滾動條不可用的高度,正常的是17px,其實就是滾動條的可滾動的部分了,其實clientHeight與height的高度差不多,如果不帶滾動條的話他們的值都是一樣的,如果帶有滾動條的話就會比height值少17px;火狐與IE下均為一緻.

接着我們來看scrollHeight

JS中height、clientHeight、scrollHeight、offsetHeight差別

 function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.scrollHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.scrollHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.scrollHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.scrollHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.scrollHeight) 

JS中height、clientHeight、scrollHeight、offsetHeight差別

     }

運作後火狐的結果為:700,552,700,602,1002

           IE的結果為: 15, 15 , 700,602, 552

scrollHeight:這個屬性就比較麻煩了,因為它們在火狐跟IE下簡直差太多了..

在火狐下還很好了解,它其實就是滾動條可滾動的部分還要加上boder的高度還要加上橫向滾動條不可用的高度,與clientHeight比起來,多個border的高度跟橫向滾動條不可用的高度.

在IE中 scrollHeight确是指這個對象它所包含的對象的高度加上boder的高度和marging,如果它裡面沒有包含對象或者這個對象的高度值未設定,那麼它的值将為15

最後我們來看offsetHeight

JS中height、clientHeight、scrollHeight、offsetHeight差別

     function justAtest()

JS中height、clientHeight、scrollHeight、offsetHeight差別

     {

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test= document.getElementById("test");

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test2=document.getElementById("test2")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test3=document.getElementById("test3")

JS中height、clientHeight、scrollHeight、offsetHeight差別

        var test4=document.getElementById("test4");     

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test4.offsetHeight); 

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test3.offsetHeight);    

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test2.offsetHeight)

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(test.offsetHeight);      

JS中height、clientHeight、scrollHeight、offsetHeight差別

        alert(document.body.offsetHeight) 

JS中height、clientHeight、scrollHeight、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已經不陌生了吧,隻不過一個是長一個是寬的問題了.