首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript 取得父元素屬性:parentNode 後直接用 offsetWidth/offsetHeight 或 getComputedStyle

     編輯:程式設計疑難解答

透過 `element.parentNode` 取得父元素後,想讀取其寬高。直接用 `obj.width`/`obj.height` 只能讀到內聯 `style="width:...;height:..."` 或 `` 的屬性值,**無法取得 CSS 渲染後的實際尺寸**。正確做法視需求分為三種。

三種取寬高方式對照

屬性/方法回傳值適用場景注意
offsetWidth / offsetHeight**邊框盒**寬高(含 padding + border + scrollbar),整數像素最常用:取得元素在頁面佔據的實際像素大小唯讀,元素不可見時為 0
clientWidth / clientHeight**內容盒**寬高(含 padding,不含 border/scrollbar)計算可視內容區域大小唯讀
getComputedStyle(el).widthCSS 計算值,字串如 "300px" 或 "auto"需要知道 CSS 設定值(%、auto、rem 等)需 `parseFloat` 轉數值,元素不可見也能取得

實戰代碼

var imgDiv = document.getElementById('divID');
var parent = imgDiv.parentNode;  // 父元素

// 1. 取得渲染後實際像素寬高(最常用)
var w = parent.offsetWidth;
var h = parent.offsetHeight;
console.log('實際佔據尺寸:', w, 'x', h);

// 2. 取得 CSS 設定值(可能是 %、auto、rem)
var style = window.getComputedStyle(parent);
var cssW = style.width;   // "300px" / "50%" / "auto"
var cssH = style.height;
console.log('CSS 設定值:', cssW, cssH);

// 3. 若父元素是 、、

常見誤區