マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. クリエイティブ

  2. 特集
  3. CSS実装徹底検証! そこが知りたいInternet Explorer 7

【特集】

CSS実装徹底検証! そこが知りたいInternet Explorer 7

18 05-04 回り込みの問題[未修正]

2006/07/13

エ・ビスコム・テック・ラボ

親要素の横幅に納まらない要素の回り込みが解除される問題[未修正]

親要素に横幅が指定されているとき、IEでは親要素の横幅に納まらない要素の回り込みが解除されるという問題が発生する。サンプルソース5-4-1では、親要素となる<div id="container">の横幅を300ピクセルに指定し、水色の背景色と青い罫線を指定している。この中には、floatプロパティを指定した文章Aと、文章Bを記述している。文章Aの横幅は100ピクセル、文章Bの横幅は300ピクセルに指定しているため、横幅の合計は400ピクセルとなり、親要素の横幅よりも大きくなる。

このソースをブラウザで表示すると、IE6では<div id="container">の横幅が中身に合わせて大きくなり、文章Bの回り込みは解除されていることがわかる。一方、IE7 beta2では、<div id="container">の横幅は指定したサイズで表示されているものの、文章Bの回り込みは解除されている。なお、Firefoxで表示した場合、<div id="container">の横幅は指定したサイズで表示され、文章Bも文章Aに回り込んだ形で表示される。

図5-4-1a:IE6での表示

図5-4-1b:IE7 beta2での表示

図5-4-1c:Firefoxでの表示

サンプルソース5-4-1

#container    {width:300px;
              background-color:cyan;
              border:solid 2px blue}

#a    {float:left;
      width:100px;
      background-color:pink}

#b    {width:300px;
      margin-left:110px;
      background-color:yellow}

<div id="container">
<div id="a">文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A</div>
<div id="b">文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B</div>
</div>

複数の要素にfloatを指定したときの表示位置に関する問題[未修正]

フロート要素の前に他のフロート要素が記述されている場合、現在のフロート要素は先に記述されたフロート要素の右側か下に表示しなければならないとされている。しかし、複数の要素にfloatとclearを指定した場合、IEではフロート要素の表示位置がおかしくなってしまう。この問題は、IE7 beta2でも修正されていない。

サンプルソース5-4-2では、文章A〜文章Eの5つの要素にfloat:leftを指定している。このうち、文章Bと文章Dにはclear:leftを指定し、回り込みを解除している。floatの表示ルールに従うと、Firefoxのように文章BとC、文章DとEが並んで表示されなければならない。しかし、IE6やIE7 beta2では、文章CとEが文章Aの横に表示されてしまい、floatの表示ルールに反していることになる。

図5-4-2a:IE6での表示

図5-4-2b:IE7 beta2での表示

図5-4-2c:Firefoxでの表示

サンプルソース5-4-2

#a    {float:left;
      width:100px;
      background-color:pink}

#b    {float:left;
      width:100px;
      background-color:yellow;
      clear:left}

#c    {float:left;
      width:100px;
      background-color:orange}

#d    {float:left;
      width:100px;
      background-color:cyan;
      clear:left}

#e    {float:left;
      width:100px;
      background-color:red}

<div id="a">文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A文章A</div>
<div id="b">文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B文章B</div>
<div id="c">文章C文章C文章C文章C文章C文章C文章C文章C文章C文章C文章C文章C</div>
<div id="d">文章D文章D文章D文章D文章D文章D文章D文章D文章D文章D文章D文章D</div>
<div id="e">文章E文章E文章E文章E文章E文章E文章E文章E文章E文章E文章E文章E</div>

画像で見るニュース(クリエイティブ)

特別企画


注目サイト