透過 `element.parentNode` 取得父元素後,想讀取其寬高。直接用 `obj.width`/`obj.height` 只能讀到內聯 `style="width:...;height:..."` 或 `
` 的屬性值,**無法取得 CSS 渲染後的實際尺寸**。正確做法視需求分為三種。
三種取寬高方式對照
| 屬性/方法 | 回傳值 | 適用場景 | 注意 |
offsetWidth / offsetHeight | **邊框盒**寬高(含 padding + border + scrollbar),整數像素 | 最常用:取得元素在頁面佔據的實際像素大小 | 唯讀,元素不可見時為 0 |
clientWidth / clientHeight | **內容盒**寬高(含 padding,不含 border/scrollbar) | 計算可視內容區域大小 | 唯讀 |
getComputedStyle(el).width | CSS 計算值,字串如 "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. 若父元素是
、
常見誤區
- ❌ `parent.width` / `parent.height` → 僅對 `
`、`