• 締切済み

CSS  IEバグ リストの後の隙間を消したい

よろしくお願いします。 以下のメニューで、"sub_menu02" の下に隙間が出てしまいます。 IEのバグのようなのですが、回避方法ご教授願います。 *実際は、の部分はJAVASCRIPTによるプルダウンになってます。 --------------------------------------------------------------- <style> * { margin : 0; padding : 0; } body { margin : 0; padding : 0; background: #fafafa; } #slidemenu_sample { overflow:hidden; } #menu_1 { padding: 0; margin: 0 0 0 0; background-color: #e7f6ff; } div#contentsArea div#sNaviArea{ width: 175px; float: left; } div#contentsArea div#sNaviArea dd{ width: 163px; background: #ffffff; } div#contentsArea div#sNaviArea dd ul{ width: 163px; list-style: none; } div#contentsArea div#sNaviArea dd ul li{ width: 163px; border-top: 1px solid #dddddd; margin: 0; padding: 0; display: block; } div#contentsArea div#sNaviArea dd ul li.choice{ background: #e7f6ff; } div#contentsArea div#sNaviArea dd ul li a{ display: block; padding: 5px 0 5px 17px; } div#contentsArea div#sNaviArea dd ul.sNaviSmall li.choice{ background: #e7f6ff; } div#contentsArea div#sNaviArea dd ul.sNaviSmall li{ width: 153px; margin: 0 0 0 10px; display: block; background: #ffffff; } </style> <body> <div> <div id="contentsArea"> <div> <div id="sNaviArea"> <dl> <dd> <ul> <li><a href="">menu01</a></li ><li class="choice"><a href="">menu02</a><ul class="sNaviSmall"><li><a href="">sub_menu01</a></li><li id="slidemenu_sample"><a href="" onmouseout="menu_1.hidePopup('menu_1')" onmouseover="menu_1.showPopup('menu_1')">sub_menu02</a><ul id="menu_1" style="display:none" onmouseout="menu_1.hidePopup('menu_1')" onmouseover="menu_1.showPopup('menu_1')"><li><a href="">aaaaa</a></li><li><a href="">bbbbb</a></li><li><a href="">cccccc</a></li></ul></li ><li><a href="">sub_menu03</a></li></ul> </ul> </dd> </dl> </div> </div> </div> </div>

みんなの回答

noname#100277
noname#100277
回答No.4

ちょいと確認。 レンダリングを正しく表示するFirefoxでの表示は以下に成ってますが、質問者は同じ表示に成ってますか? IEでの表示は完全無視します。 (最初の書き込みでのソースで・・・) http://shagazo.com/a1/userlog/aides/img/20080730005539.jpg

freakale
質問者

お礼

質問者のfreakaleです。 div#contentsArea div#sNaviArea dd ul li a{ display: block; padding: 5px 0 5px 17px; } の部分を、 div#contentsArea div#sNaviArea dd ul li a{ display: block; margin: 5px 0 5px 17px; } に変えることで、IE側で希望通りの表示になりましたが、 IE7以外のモダンブラウザでは崩れてしまいました。 ので、今回は結局以下のようにハックを使うことで回避することにしました。 /*IE6以下、IE7用*/ *:first-child+html div#contentsArea div#sNaviArea dd ul li a{ display: block; margin: 5px 0 5px 17px; } * html div#contentsArea div#sNaviArea dd ul li a{ display: block; margin: 5px 0 5px 17px; } /*IE7以外のモダンブラウザ用*/ html>/**/body div#contentsArea div#sNaviArea dd ul li a{ display: block; padding: 5px 0 5px 17px; } アドバイスしていただいた方、どうもありがとうございました。

freakale
質問者

補足

aidesさん、どうもありがとうございます。 私の方でも、リンク先の画像の通りに表示されています。 div#contentsArea div#sNaviArea dd ul li a{ display: block; ←これを削除 padding: 5px 0 5px 17px; } すると、見た目は変わってしまいますが、バグは無くなるようです。 バグ自体は 【display: block】指定されたリストアイテムの後に隙間ができる というものが絡んでいるようなのですが…。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.3

>ulのmarginとpaddingを0に指定しています 確か自分もなんか似たような苦労をした気がするなぁ ulの指定がしてあるのは判ったけど、 liも指定したらどうなるかな? (menu_1内のliが隙間を作っている疑惑) もう一つの疑惑はやっぱり件の >sub_menu02</a><ul id="menu_1" この部分。 インラインとブロックが並列しているって事かな。 <li><a>sub_menu02</a><ul id="menu_1">・・・ ↓ <li><div><a>sub_menu02</a></div><ul id="menu_1">・・・ こうするとdivとulでblock同士のmarginって事になるから調整可能になると思うんだけど・・・

freakale
質問者

補足

参考意見ありがとうございます。 menu_1内のliの指定もしてみましたがダメでした。 >インラインとブロックが並列しているって事かな。 div#contentsArea div#sNaviArea dd ul li a{ display: block; padding: 5px 0 5px 17px; } にて、ブロック要素化しています。

回答No.2

自分も原因は >sub_menu02</a><ul id="menu_1" にあると思います。 しかしながら、いろいろと試してみましたが、解決には結びつきませんでした。 少し強引ですが、自分的な解決策としては、 <li id="aaa"><a href="">sub_menu03</a></li> <style> #aaa{ top: -2px; position: relative; } <style> として、sub_menu03を位置指定で-2px程無理矢理上に移動させます。 ですが、これだとid="menu_1"が非表示から表示になったとき、 <li><a href="">cccccc</a></li> が-2px分高さが短くなってしまいます。 そこで <li id="bbb"><a href="">cccccc</a></li> <style> #bbb{ height: 25px; ←任意 } <style> というように、高さを持たせてあげると、見た目上は隙間が消えました。 もっとスマートなやり方があるんでしょうが、取り急ぎ、思いついたのはこれくらいでした。

freakale
質問者

補足

アドバイスありがとうございます。 確かにアドバイス通り指定してあげると、"sub_menu02"の下の隙間は消えるのですが、上に移動した分、"sub_menu03"の下に隙間ができてしまいます。 さらに、IE特有のバグのようなので、firefox等では、"sub_menu02"が移動分狭まってしまうのです。 私の方でも、スターハック等での回避方法を探しているのですが・・・ 引き続き回答お待ちしています。 宜しくお願いします。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>sub_menu02</a><ul id="menu_1" ulのmarginとpaddingが0になってないだけなんじゃ? パっと見だから違うかも。

freakale
質問者

補足

アドバイスありがとうございます。 #menu_1 { padding: 0; margin: 0 0 0 0;   background-color: #e7f6ff; } の部分で、ulのmarginとpaddingを0に指定しています。

関連するQ&A