• 締切済み

セルの幅について

htmlで指定した幅と開発者ツールで確認した実際の幅、JQUERYで取得できる幅 それぞれ違うのはなぜでしょうか。 具体的なhtmlは以下のようなものです。 table-layout: fixedは都合により使う事ができません。 <script src="./jquery.js" type="text/javascript"></script> <table border="1"> <colgroup> <col width="10"> <col width="20"> <col width="30"> </colgroup> <thead> </thead> <tbody> <tr> <td class="a">a</td> <td class="b">b</td> <td class="c">c</td> </tr> </tbody> </table> <script type="text/javascript"> alert($('.a').width()); </script> 開発者ツールで確認すると左から14 24 34の幅になります。 また、jqueryでセルの幅をwidth()で取得すると 12 22 32となります。 指定 使用しているブラウザはIE8 / IE6です。

みんなの回答

回答No.1

col widthは、cellpadding(初期値1) cellspacing(初期値1)を含みません。 開発者ツールで確認すると、cellpadding(初期値1) cellspacing(初期値1)を含む値になります。パディングもスペーシングも、どちらも左右に付くので「(1+1)×2」で4増えます。 jqueryでは、cellpadding(初期値1) cellspacing(初期値1)のうち、どちらか片方(どっちだったか忘れた)を含む値になります。 <table border="1" cellspacing="0" cellpadding="0">だと、どっちで見ても「10 20 30」になる筈です。 <table border="1" cellspacing="2" cellpadding="4">で試せば、何がどれを含む値を返すのか明確になるので試して見て下さい。

Jedi32
質問者

補足

ありがとうございます。 検証してみました。 jquery borderを含めている。 左右とで+2となるようです。 開発者ツール  border cellpaddingを含めている。 paddingの左右と、borderの左右の値が加算されるようです。 大変勉強になります。

関連するQ&A