IE 以外で body の右マージンが無視される訳

body 要素のサイズについて調べてたら、妙なことに気がつきました。 ブラウザによって 右マージン(margin-right) が表示されたりされなかったり。テスト用に作成した body width test (HTML) などで確認すると、IE6 IE7 以外では右マージンが表示されていないのがわかります。

nextindex.net によると、CSS過剰制約 (over-constrained) という仕様のようで。 表示しきれないような狭い領域にボックス要素を配置した場合、親の配置指定が左詰めならば右のマージン、右詰ならば左のマージン指定が無視されるそうな。

IECSSにあまり準拠していない、ってよく聞くけど、これもその1つかな。

ちなみに IE7 は互換モードでは右マージンを表示するけれど、標準準拠モード(DOM宣言がちゃんとあるxhtml)だと右マージンを表示しないみたい。 「互換性をなるべく維持しつつ、可能な限り標準には準拠していきたい」という MS の方針には基本的には賛成ではありますが、モード切り替えでこんなとこまで変わるのは プチ迷惑 だとも感じてみたり。