テーブルに適用border-collapse: collapse;
してセルの境界線を「融合」すると、Javascriptでテーブルセルの幅を決定する際に問題が発生し始めます。たとえば、次のページを見てください。http:
//game-point.net/misc/browserTests/scratchpads/jsTableWidth/
2つのテーブルがあり、1つは境界線が折りたたまれており、もう1つは境界線が折りたたまれていません。境界線が折りたたまれていない行をクリックすると、jQueryのinnerWidth関数とouterWidth関数が、期待どおりの結果を報告します(コンテンツの幅、コンテンツに境界線の幅を加えたもの、パディングはありません)。
ただし、境界線が折りたたまれているテーブルの行をクリックすると、特にclientWidth
プロパティでブラウザの動作に一貫性がなくなります。Firefoxでは、はとclientWidth
同じwidth()
です。IEとChromeでは1ピクセル高く、Operaではと同じwidth()
ですがOperawidth()
は小さすぎます。実際、width()
Firefoxを除いて、私がテストしたすべてのブラウザで1ピクセル小さすぎます。したがって、スクリーンショットを撮り、コンテンツが実際に80pxである場合、width()
は79pxです(jQueryは計算されたCSS値から取得します)。どうしてこれなの?
実際のコンテンツの幅を取得したいのですが。width()
Firefoxだけが境界線を折りたたんでそれを正しく行うので、私は使用できないようです。境界線が含まれているため、使用できませんouterWidth()
(または、実際のコンテンツの幅より1pxだけ大きいため、境界線が1つだけである可能性があります)。clientWidth
ブラウザ間で値が一致しないため使用できません。どうすればよいですか。またwidth()
、境界線が折りたたまれている場合、ほとんどのブラウザで1pxが短すぎるのはなぜですか。