NetscapeのCSS解釈

どうせFirefoxと同じだとタカをくくっていたら、Netscape(Win・Mac共に)だけで発生する現象に遭遇しました。
ページ内のあるボックスに対して内容がハミ出した場合に、body要素の背景の幅計算が狂うという現象です。
以下のソースをそれぞれの環境で表示してみると、こうなります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <title>css test</title>
  <style type="text/css">
   <!--
    body {
        margin:1em;
        background:url('body_bg.gif') repeat-y 50% 0;
        border:1px solid green;
        line-height:1.5;
    }
    .container {
        width:380px;
        margin:1em auto;
        border:1px solid red;
        word-wrap:break-word;
    }
    -->
  </style>
 </head>
 <body>
  <div class="container">
   <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
   <p>NetscapeでのCSSレイアウトについて、実験をしてみますよ。NetscapeでのCSSレイアウトについて、実験をしてみますよ。NetscapeでのCSSレイアウトについて、実験をしてみますよ。NetscapeでのCSSレイアウトについて、実験をしてみますよ。NetscapeでのCSSレイアウトについて、実験をしてみますよ。NetscapeでのCSSレイアウトについて、実験をしてみますよ。</p>
  </div>
 </body>
</html>

Windows IE6.0

http://lism.in/hatena/win_ie.jpg

Windows Firefox1.5

http://lism.in/hatena/win_ff.jpg

Windows Netscape7.1

http://lism.in/hatena/win_nn.jpg

Windows Opera8.5

http://lism.in/hatena/win_opera.jpg

Mac Firefox1.5

http://lism.in/hatena/mac_ff.jpg

Mac Netscape7.1

http://lism.in/hatena/mac_nn.jpg

Mac Safari2.0

http://lism.in/hatena/mac_safari.jpg

Mac Opera8.5

http://lism.in/hatena/mac_opera.jpg

Netscapeのみ、ハミ出したテキストに引きずられる形でbody要素の背景が右にズレます。
この例で言うと、「containerの左マージン+ハミ出したテキストの幅」をbodyの幅として背景を配置してしまうようです。

他のブラウザでも、bodyに対してmarginとborderを指定しているのに、背景はボーダーの外まで出ているのは若干違和感を覚えますが、bodyの背景は通常のボックスのそれとは違う実装になっているようです。上記の例でも、bodyではなく、その下に一つdivを作って、一階層落としてやるとNetscapeでも他のブラウザと同様にレンダリングされました。bodyに対してはあまり複雑な指定をしない方が賢明かも知れません。