問:是否有這樣一個場景,getBoundingClientRect
和window.getComputedStyle
將在width
或height
有什麼不同?方法元素的寬度/高度
我剛在IE中發現一個不一致的width
(見下),當元素有box-sizing
其中window.getComputedStyle
返回錯誤的值。
所以我想覆蓋只是width
和height
值從getBoundingClientRect
但不知道是否有情況下,將失敗。問題(在IE碎)的
實施例:http://jsfiddle.net/bwPM8/
var box = document.querySelector('.box');
var gBCR_width = box.getBoundingClientRect().width; // always 200
var wGCS = window.getComputedStyle(box).width; // 200 some browsers, 160 in IE
我沒有看過很長一段時間的IE瀏覽器,但在'getComputedStyl e似乎計算填充和邊框內的邊框,而其他瀏覽器在外面計算。 '200px - (10 + 10 border) - (10 + 10 padding)= 160px' – erosman
@erosman,謝謝你的反饋。是的,IE以自己的方式計算。你知道我在第一行寫的問題的答案嗎? – Rikard
對不起,我不(但不是)但是...'getComputedStyle()'從CSS獲取它的數據,因此數據在CSS中被硬編碼。 'getBoundingClientRect()'是一個包含一組文本矩形的文本矩形對象。換句話說,它似乎是從對象的渲染中獲取數據。不同之處來自[CSS Box Model](http://www.w3schools.com/css/css_boxmodel.asp),正如它在該頁面中所述:_「IE8和IE的早期版本,包括填充和邊框width屬性。要解決此問題,請將<!DOCTYPE html>添加到HTML頁面。「_ – erosman