• ベストアンサー

CSSでポップアップメニューを作成したがIEだけメニューが表示されません。

下記のようなCSSでポップアップメニューを作成したのですが IEだけポップアップメニューが表示されませんでした。 IEでもポップアップメニューが表示されるようにするには どのようにすればよいのでしょうか?(JavaScriptは未使用で作成) <html> <head> <style type="text/css"> #menu { position: relative; width: 102px; height: 22px; } #menu li { list-style-type: none; float: left; } #menu li a { color: gray; width: 100px; height:20px; text-decoration: none; text-align: center; border: 1px solid gray; display: block; } #menu li a:hover { background-color:#FFFFCC; } #menu ul li ul { display: none; } #menu ul li:hover ul { display:block; position:absolute; top: 22px; left: 0; } </style> </head> <body> <div id="menu"> <ul> <li> <a href="#">home</a> <ul> <li><a href="#">first</a></li> <li><a href="#">second</a></li> <li><a href="#">third</a></li> </ul> </li> </ul> </div> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

IE及びOpera6では、 >「:hover,:active疑似クラスは,始点アンカー(href属性を持つa要素)と組み合わせた場合にのみ効果を持つ。」 (下記参照URLより引用) という事で、A要素との組み合わせでないと「hover」というタイミングを指示できないので、実現不可能ではないかと・・・。 動的処理なのに契機が指示できないのは、ちょっと・・・。 また、今回はその包括範囲内にA要素が別途必要な訳なので、ダミーでA要素で囲うという事はA要素の入れ子となり不可能・・・。 という事で、CGIで事前にブラウザの判定をして表示ページを振り分けるでもしない限り、CSSのみでのポップアップメニューはあきらめるか、 IEの場合は該当CSSを無効になる様に仕掛けを作るか・・・・・。

参考URL:
http://hp.vector.co.jp/authors/VA022006/css/corrbrwser/selector.html#pseudo-classes
nana_watuki
質問者

お礼

>「:hover,:active疑似クラスは,始点アンカー(href属性を持つa要素)と組み合わせた場合にのみ効果を持つ。」 確かにこれでは不可能ですね。CSSのみでのポップアップメニューはあきらめます。 ご回答いただきどうもありがとうございました。

その他の回答 (3)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

良き代替手段は思いつきませんが、とりあえず原因は IEではリンクアンカー(hrefを指定した<a>)以外では hover擬似クラスに対応していない ためだと思います。

nana_watuki
質問者

お礼

>IEではリンクアンカー(hrefを指定した<a>)以外では >hover擬似クラスに対応していない なるほど。これでは理論上は無理みたいですね。 ご回答いただきどうもありがとうございました。

noname#19206
noname#19206
回答No.2

ただ単に IE が対応していない CSS であるだけだと思います。 こういうのは古いブラウザで使えない可能性があるから JavaScript にしたほうが無難です。 …が、そうやって JavaScript 未使用のメニューを作った努力を無駄にしてはいけません。 どこかで再利用するのもひとつの手段です(^^)

nana_watuki
質問者

お礼

ご回答いただきどうもありがとうございました。

nana_watuki
質問者

補足

確かに古いブラウザでは使用できませんが将来的には 必要になるかと思うのでどうしても知りたいのです。 ちなみに上記のソースはIEでは動作しませんでしたが Firefox,Opera,Netscapeなどでは動作しました。 おそらくIEのバグが原因かと思うのですが 何か良い方法はないものでしょうか。 せめてIE6だけでもちゃんと表示できるようになればよいのですが・・・

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.1

ポップアップメニューは、JavaScriptを使わないと出来ないと思います

nana_watuki
質問者

お礼

ご回答いただきどうもありがとうございました。

nana_watuki
質問者

補足

ここでいうポップアップメニューとはメニューをロールオーバーしたときに 追加のメニューが表示されるもののことです。