CSSで背景をいくつか利用して角丸を表現しようとする際に、div要素をいくつか重ねると、IE6などでdiv間に隙間が空いてしまう場合があります。その改善方法です。
ただし、今回紹介するコーディング方法は中身のないタグ要素、すなわち空要素を使っているHTMLが対象であり、空要素を使うことはコーディングのルールとして間違っています。あくまでそういったコーディングがなされた既存のサイトを改善する、という前提でご紹介しますことをお断りさせていただきます。
HTML
2 | <div class= "boxTop " ></div> |
3 | <div class= "boxInner" >サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト</div> |
4 | <div class= "boxUnder" ></div> |
CSS
08 | background: url(box_top.gif) no-repeat; |
16 | background: url(box_under.gif) no-repeat; |
上記のようなコードを修正するとした場合、方法として二つ考えられます。
方法1 空要素にfont-size: 0pxを指定する
04 | background: url(box_top.gif) no-repeat; |
10 | background: url(box_under.gif) no-repeat; |
上記のように、空要素にfont-size: 0px;を指定することで、隙間が空いてしまうバグを回避することが可能です。
方法2 div要素を入れ子にする
HTML
4 | <div class= "textBox" >サンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキストサンプルテキスト</div> |
CSS
03 | background: url(box_top.gif) no-repeat top; |
07 | background: url(box_under.gif) no-repeat bottom; |
10 | background-color: #F7B15E; |
サンプルページ
上記のように、div要素を入れ子にすることで問題を回避することができます。こちらの方がコーディングとしてもシンプルですし、角丸を作る際などはおすすめします。
※便宜上、クラス名は変更しています。
今回はややイレギュラーな状況に限ったお話となりましたが、もしこういった状況に陥ってしまった場合は、今回紹介した方法をお試しください。