height、clientHeight、scrollHeight、offsetHeight區別

來源:互聯網
上載者:User

感謝雨藤隱林(http://www.cnblogs.com/yuteng/)的分享


我們來實現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) 
     }

運行後Firefox的結果為:700,550,583,483,1000
           IE的結果為:700 ,550,583,483,1000
IE與Firefox下的運行結果是一致的.下面來看下clientHeight的定義.
clientHeight:可見地區的寬度,不包括boder的寬度,如果地區內帶有捲軸,還應該減去橫向捲軸停用高度,正常的是17px,其實就是捲軸的可滾動的部分了,其實clientHeight與height的高度差不多,如果不帶捲軸的話他們的值都是一樣的,如果帶有捲軸的話就會比height值少17px;Firefox與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) 
     }

運行後Firefox的結果為:700,552,700,602,1002
           IE的結果為: 15, 15 , 700,602, 552
scrollHeight:這個屬性就比較麻煩了,因為它們在Firefox跟IE下簡直差太多了..
在Firefox下還很好理解,它其實就是捲軸可滾動的部分還要加上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) 
     }


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.