IE6でリストの背景色が次の行に被ってしまう
XMLのツリー構造をHTMLのリストに変換する際、機械的に
<ul>
<li>~
<ul>
~
</ul>
</li>
</ul>
のような感じで入れ子にしていたのですが、<li>要素に背景色を指定した場合、子の<ul>要素の中身が空だと、直接の関係の無い次の行まで背景色が被ってしまう、という現象がIE6で発生することに気がつきました。
実際の表示サンプルは→こちら
<li style="background-color:yellow;">1.【背景:黄・子:(-)】<ul></ul></li>
<li>2.【背景:(-)・子:(-)】<ul></ul></li>
<li>3.【背景:(-)・子:(有)】<ul><li style="background-color:lime;">3-1. 【背景:緑・子:(-)】<ul></ul></li></ul></li>
<li>4.【背景:(-)・子:(-)】<ul></ul></li>
</ul>
対策としては、子ノードが無い場合には<ul>要素自体も作成しない、というのが一番ですが、空の要素を用意しておき、後からダイナミックに中身を追加する、というような使い方をしたい場合もあります。
要は、要素が空なのが原因なので、中身のある要素をダミーで追加してやれば改善されそうです。
下記は、半角空白の入った行高0のダミーブロック(<div>)を機械的に追加した例です。
<li style="background-color:yellow;">1.【背景:黄・子:(-)】<ul></ul><div style="line-height:0px;"> </div></li>
<li>2.【背景:(-)・子:(-)】<ul></ul><div style="line-height:0px;"> </div></li>
<li>3.【背景:(-)・子:(有)】<ul><li style="background-color:lime;">3-1. 【背景:緑・子:(-)】<ul></ul><div style="line-height:0px;"> </div></li></ul><div style="line-height:0px;"> </div></li>
<li>4.【背景:(-)・子:(-)】<ul></ul><div style="line-height:0px;"> </div></li>
</ul>
2006/06/01(木) 07:04 | 固定リンク
| 記事の編集(管理者用)
「パソコン・インターネット」カテゴリの記事
- 最近ツイートしていないけど(2012.03.07)
- 気をつけよう、通信料の無駄遣い(2012.03.07)
- いつもと環境が違うと戸惑う<Firefoxのキャプチャ用アドオン(2012.03.05)
- 意味も無くツイートボタンを付けてみる(2012.03.05)
- いまごろ、ひかり電話に加入(2012.03.03)
「覚書」カテゴリの記事
- ISBNとかキーワードをメールで送ると、リリース日を含む書籍情報が返るサービスを試作(2012.03.17)
- ココログのツイッターへのクロスポスト、デフォルトにはできない…?(2012.03.15)
- 春といっても、夜外に出ると寒いですねぇ。(2012.03.13)
- 明日できるなら、今日でもできるかも。うん。(2012.03.10)
- 最近ツイートしていないけど(2012.03.07)

