2009年05月08日

widthを使うときの注意点 その2

こんにちは。
溝上です。

前回に引き続き「widthを使うときの注意点 その2」をお送りします。

前回の最後にも書きましたが、Internet Explorerで表示崩れが起きたらまず一番にwidthを疑いましょう。
borderが正しく表示されない場合などもwidthを指定すれば直ることが良くあります。
それでは早速、表示崩れするサンプルを試してみます。
borderで囲んだdivの中で、左右にfloatします。
htmlコーディング例
<div class="box">
<div class="left">left</div>
<div class="right">right</div>
<div class="clear">&nbsp;</div>
</div>
(cssサンプル)
.box{
  border:1px solid #000000;
}
.right {
  float:right;
  width:150px;
  height:150px;
}
.left {
  float:left;
  width:150px;
  height:150px;
}
.clear {
  clear:both;
  height:0;
  font-size:1px;
  line-height:0;
  visibility:hidden;
}
このサンプルをInternet Explorer6とFirefox1.5で見てみました。

▼Firefoxの場合▼

▼Internet Explorerの場合▼


「ちゃんとborderが表示されているじゃないか」

と思われたのではないでしょうか。
左右にfloatしたdivタグの下に隙間が出来てしまっていますが、border自体は正しく表示されているように見えます。
これがです。

一度Internet Explorerを最小化した後、最大化してみましょう。

▼Internet Explorerの場合(最小化→最大化)▼


みごとな表示崩れです。
borderが下だけ表示されています。

この現象は画面をスクロールした場合や、長いページで元から画面に表示されていなかった箇所、お気に入りの表示、非表示を切り替えた場合などにも発生します。

発生する場合が多いわりに、なかなか気づきにくい厄介な表示崩れでは無いでしょうか。

この表示崩れはfloatしている要素を囲んでいるタグにwidthをつければ解決します。
(cssサンプル)
.box{   
width:400px;
border:1px solid #000000;
}
▼Internet Explorerの場合(最小化→最大化)▼


borderだけではなく下にあった隙間も無くなりました。
スクロールしたり、お気に入りの表示を切り替えたりしても問題なしです。

このバグも前回同様floatが関わっているようですが、特にfloatしていない場合でも起きたりします。
バグが再現できなくてサンプルはありませんが・・・
Internet Explorerは本当に厄介なバグが多いですね。
 

HTML5&CSS3の最新情報はこちら → HTML5GOGO

posted by baba at 15:16 | Comment(0) | TrackBack(0) | テクニック
この記事へのコメント

この記事へのトラックバック
 
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。