我需要計算DOM節點的寬度和高度,使其不包含填充,邊距和邊框寬度,即;內容區域的寬度和高度。目前,我已經嘗試過clientWidth和clientHeight,但尺寸並不等同於實際的DOM節點。計算內容區域的維度的最佳方法是什麼?如何用JavaScript測量DOM節點內容區域的維度?
回答
從什麼@jordan說,以消除填充左,右填充從clientWidth會給內容區域的實際大小的角度計算點。但問題是,如果樣式是通過外部樣式表設置的,則無法通過elem.style.paddingLeft和elem.style.paddingRight獲得左右填充的值。
下面是閱讀外部樣式表後獲得通過節點瀏覽器應用的填充實際值的方式:
var node = document.getElementById("nodeid");
alert("Padding Left before computed style: " + node.style.paddingLeft);
var st = window.getComputedStyle(node);
alert("Padding Left after computed style: " + st.paddingLeft);
注:如果您使用風格屬性,那麼elem.style.paddingLeft有節點風格將否則工作不行!
clientWidth
和clientHeight
是最好的方法來做到這一點,但你需要減去填充。
所以要獲得寬度,你可以做elem.clientWidth - elem.paddingLeft - elem.paddingRight
。
下面是關於確定尺寸略有文檔:https://developer.mozilla.org/en-US/docs/Determining_the_dimensions_of_elements
有一個問題,使用樣式表設置填充,邊距和邊框,當我嘗試通過javascript獲取寬度時,它會返回空白。例如,node.style.paddingLeft返回「」我已經在chrome dev工具中檢查了節點paddingLeft,並且顯示了3px。我如何從JavaScript獲得這個3px? –
你什麼時候檢查寬度?您可能需要等到onload函數被調用後,纔會呈現整個頁面。 – Jordan
是的,我正在dom加載完成後檢查它。在控制檯中驗證相同。當我輸入node.style.paddingLeft時,它返回「」。在你的答案中,我可以看到在elem中沒有像paddingLeft這樣的屬性,它應該在elem.style.paddingLeft –
- 1. 視圖附加節點內容備用塊區域輸出
- 2. 內容區域的CSS高度
- 3. 如何檢測DOM節點插入?
- 4. 如何識別DOM節點鄰近度
- 5. 如何根據點擊的DOM節點區分點擊事件?
- 6. 將新區域嵌入到內容類型節點模板
- 7. CSS內容區域100%高度
- 8. 編輯內容區域寬度
- 9. 如何增加博客上博客的內容區域寬度?
- 10. 行內容獨立可點擊區域
- 11. URL內容維度
- 12. 測距點區域
- 13. prism:如何將shell.xaml中的某些內容綁定到區域內容變量?
- 14. 未能改變節點內容+ JavaScript的
- 15. Unity3d:如何檢測區域內的點擊
- 16. 如何水平擴展內聯跨度的可點擊區域?
- 17. 如何用yank緩衝區內容替換emacs中的區域?
- 18. 檢測DOM節點何時被刪除?
- 19. WPF內容的難區域
- 20. 根據節點內容設置請求的內容長度
- 21. 如何存儲DOM節點?
- 22. 如何從DOM節點
- 23. 如何使用視圖內容作爲節點內容
- 24. 如何用PhantomJS中的遠程JavaScript代替DOM節點
- 25. 使用Javascript如何獲得DOM節點的僞CSS樣式?
- 26. 使用Javascript反向DOM節點訂單
- 27. 獲取JavaScript節點原始內容
- 28. 將內容添加到內容區域
- 29. 內容溢出內容區域
- 30. 獲取跨域iframe的DOM內容
我不知道你不是要求'scrollWidth' /'scrollHeight'在這裏。 – raina77ow