2007年12月10日

IEで絶対配置(absolute)のボックスの中身がずれる

先日、仕事でHTML4.01 Transitional+CSSでコーディングしていたところ、position:absolutを指定したボックスの中にある要素が、Windows IE6でズレて(飛び出て?)表示されるというバグがありました。

3つのボックスに「position:relative」をかけて、その子要素をabsoluteしてたんですよ。で、3つのボックスを横並びにしたかったので「float:left」をかけてみたら・・・なんと!3つ目のボックスの中の子要素の最後の一つが、CSSが外れたかのように左下に表示されちゃったんです。 どんな感じかというと、

こんな感じ。

こんな感じ。これが、IEだけで起こるんです。FirefoxやらOperaはオッケー。意味不明。
ためしに、枠外に飛び出てしまう要素に「border」を入れてみたけど、フツーに本来あるべき場所に枠が。でも、中身は左下。・・・なんじゃこりゃ!?ということで、調べてみました。

とりあえずいろいろネットを調べていると、IEでposition:absoluteを指定した場合に起こるバグのようです。IE6/IE7ともに起こるらしい。
対処法は、

問題の起こる要素の直後(閉じDIVの手前)でclearを掛ける

これで、この問題は回避されます。
まぁ、after擬似要素でclear掛けるか、hrタグでclear掛けるか、はたまた空DIV入れるか・・・をして、clear掛ければ大丈夫!
ちなみに、自分は・・・時間がなかったので空DIVにしましt
ホント、ゴメンナサイ・・・

ちなみに、参考にさせていただいたのはこちら!
IEで絶対配置(position:absolute)のボックスが消えるバグの検証 - jmblog.jp
IEで position:absolute した要素が消えるバグ - ぴのBlog
IEでのCSSのバグを回避するhasLayout - コリス

そろそろプライベートな話でも書いたほうがいいと思いつつ、CSSの話しかありません・・・

トラックバック

この記事へのトラックバック用アドレス: http://www.buzz727.jp/blog/mt-tb.cgi/96

コメントを投稿

Firefox meter
  • RSS 2.0
  • ATOM 0.3
  • POWERED BY MOVABLE TYPE
  • Opera
  • Firefox をダウンロード!!
  • HAPPY SWING
All contents (design, writings and photographs) are Copyright Buzz 2006-2009 All rights reserved.