さまざまなブラウザで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を返します。