ウェブサイト制作について質問です。


CSSとJavascriptを使ったポップアップメニューなのですが、IE6とFireFox1.5~2ではちゃんと動いていました。
しかし、IE7ではうまく動かないことが判明してしまいました。(すべてwindowsXP sp2で確認)

原因を探ったところ、メニュー全体に指定しているCSSの「position:absolute」でした。
(具体的には、メニュー全体を<div id="navbar"></div>で囲んでいて、CSSにおいて#navbarのプロパティでpositionを指定しています)
これをはずせばきちんと動きますが、そうするとレイアウトが崩れるのでできません。
なにかよい方法はありますでしょうか。
お知恵をかしてください。

以下のリンクに、ポップアップメニューとコードがあります。
よろしくお願いします!
http://syuwach.nigamushi.net/test.html

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/04/09 17:25:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント27pt

IE7だけでなくWindows版のIE全体の仕様(?)の影響と考えられます。「IEで position:absolute した要素が消えるバグ」を参考にしてください。

対策としては、

#navbar{
position: relative;
}

とするのが手っ取り早いのですが、メニューバーの位置を絶対座標で指定されているのでしょうか? その場合は、個別の要素を position:absolute 指定することで、何とか調整してみてください。

id:syuwach

ありがとうございます。

お察しの通り、絶対座標で指定しています。

個別の要素をpositon:absolute指定もレイアウト上難しそうです・・・。

2008/04/02 20:30:07
id:tokuya_n No.2

回答回数56ベストアンサー獲得回数7

ポイント27pt

たぶん、ここで質問されている問題と同じではないかと。

同じ解決策ではどうでしょう。Timeoutを設定して過敏反応を緩和する感じですね。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1015339...


まあ,メニュー開いたら,クリックするまで閉じない(onmouseoutはつかわない)ようにするのもありかなと思いますが。

id:syuwach

ありがとうございます。

上記のサンプルだと、クリックしたらメニューが開くタイプですね。

改造すればロールオーバーでメニューが開くようになるのでしょうか??

ちょっと難しそうです。

追伸

position:absolute指定をしてもポップアップメニューがきちんと動くサンプルとかありますかね??

2008/04/02 20:33:36
id:tokuya_n No.3

回答回数56ベストアンサー獲得回数7

ポイント26pt

メニューを開いたら,クリックするまで閉じない,でよければこんな感じでまあそれっぽく動きます。

(WindowsVista sp1, IE7 で確認 - 大なり小なりは半角に置換してください)

<script language="javascript">

function sswch(id,p){document.getElementById(id).style.visibility=p;return true;}

</script>

</head>

<body onclick="sswch('n_pop','hidden')">

<div id="navbar">

<div class="menu">

<h2 onclick="sswch('n_pop','visible')" onmouseover="sswch('n_pop','visible')"><a href="#">News</a></h2>

<ul id="n_pop">

<li><a href="#" onclick="sswch('n_pop','hidden')">ニュース</a></li>

<li><a href="#" onclick="sswch('n_pop','hidden')">ニュース</a></li>

<li><a href="#" onclick="sswch('n_pop','hidden')">ニュース</a></li>

<li><a href="#" onclick="sswch('n_pop','hidden')">ニュース</a></li>

</ul>

</div>

</div>

凝りたければこんなのもあります。(IE7でもFirefox2でも動きました)

http://hyper-text.org/archives/2006/12/slide_menu_javascript.sht...

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません