我在不同浏览器中使用 offsetWidth 时遇到问题。结果的这种差异导致了一些奇怪的布局。我创建了一个非常小的示例来显示我所看到的。
HTML
<table id="tbl">
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
</table>
<button onclick="calc()">Calculate Offset Width</button>
<div>Cell 1 offsetWidth: <span id="c1offWidth"></span></div>
js
function calc(){
document.getElementById('c1offWidth').innerHTML =
document.getElementById('tbl').children[0].children[0].offsetWidth;
}
CSS
当我在 chrome、safari 和 opera 上运行它时,单元格 1 的偏移宽度返回的值是 72。当我在 firefox 和 IE9-10 上运行它时,返回的值是 77。
我的印象是这是计算元素宽度的最佳方法,包括填充和边框。
是否存在始终返回相同结果的跨浏览器解决方案?我尝试使用 jQuery,但结果更加令人困惑。
编辑 因为每个人都在推荐outerWidth,所以我也为此制作了一个jsbin。结果仍然因浏览器而异。Chrome 返回 36;IE9-10 和 Firefox 返回 39。