![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ドロップダウンメニューがIE6だと
ドロップしたメニューが下の画像の下に隠れてしまいます。
回避方法はありますでしょうか?
ソースは
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
<script type="text/javascript"><!--
function visiblemenu(to) {
document.getElementById(to).style.display = "block";
}
function hiddenmenu(to) {
document.getElementById(to).style.display = "none";
}
// --></script>
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
<div id="jumpmenu">
<table>
<tr>
<td><img src="image/11_b_e03_r1_c1.jpg" width="80" height="42"></td>
<td>
<div onMouseover="visiblemenu('menu01')" onMouseout="hiddenmenu('menu01')">
<a href="#"><img src="image/11_b_e03_r1_c2.jpg" width="117" height="42" id="n11_b_e03_r1_c2"></a><br>
<div id="menu01" class="menubox">
<a href="#" class="link"><p class="menu">メニュー1</p></a>
<a href="#" class="link"><p class="menu">メニュー1</p></a> </div>
</div>
</td>
<td><img src="image/11_b_e03_r1_c3.jpg" width="23" height="42"></td>
<td>
<div onMouseover="visiblemenu('menu02')" onMouseout="hiddenmenu('menu02')">
<a href="#"><img src="image/11_b_e03_r1_c4.jpg" width="117" height="42" id="n11_b_e03_r1_c4"></a><br>
<div id="menu02" class="menubox">
<a href="#" class="link"><p class="menu">メニュー1</p></a>
<a href="#" class="link"><p class="menu">メニュー1</p></a> </div>
・
・
・
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
CSSは
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
img {border:0; vartical-align:top;}
#jumpmenu {width:1000;}
#jumpmenu table {width:1000; border-collapse:collapse;}
#jumpmenu table td {padding:0;}
#jumpmenu table td p.menu {
text-decoration :none;
border :1px solid #ece9d8;
padding :5px;
margin :0;
display :block;
font-family :Verdana, Arial, Helvetica, sans-serif;
font-size :14px;
text-align :left;
}
#jumpmenu table td a:link p.menu {color:#fff; background:#b4c1cf;}
#jumpmenu table td a:visited p.menu {color:#fff; background:#b4c1cf;}
#jumpmenu table td a:hover p.menu {color:#333; background:#ccc;}
#jumpmenu table td a:link.link {text-decoration :none;}
#jumpmenu table td .menubox{
width :180px;
position :absolute;
border :1px solid #555;
display :none;
}
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
です。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
こんにちは。
No2です。少し時間があったので、実験してみました。
どうやら、メインのimgからmouseoutした時点で、イベントが発生してしまうみたいですね。
さらには<a>タグ(メニュー1の表示)から移動する度にもイベントが発生して非表示にしているみたいです。(実際は↑どれかひとつで非表示になるのですが…)
…で、一応、似たものを書き直して見ましたのでご参考までに。
(IE6で検証。他のブラウザはきちんと確認してはいません。)
メニューの構成をクラス名で分けるようにして、「menu」で1つのセットで、「main」が常に表示する部分、「submenu」が表示が切り替わる部分です。
「menu」と「main」、「submenu」は親子になるようにしてください。(孫は不可)
方法としては、非表示にするのにタイムラグを設けて、その間に次の(表示)イベントが発生したら、非表示にするのを取りやめるという考え方です。
また、HTMLの構成を見やすくするためにイベントの設定もスクリプト側で行うようにしていますので、スクリプトが少々長くなっています。
ついでにtableも必ずしも必要なさそうなので、外しています。
<html>
<head>
<style type="text/css">
.menu {
margin: 0;
padding: 0;
float: left;
}
.menu img {
display: block;
height: 42px;
border: 0;
}
.submenu {
visibility: hidden;
position: absolute;
z-index: 3;
}
.submenu a {
display: block;
width: 180px;
padding: 5px;
text-decoration: none;
border: 1px solid #ece9d8;
background: #b4c1cf;
color: #fff;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
text-align: left;
}
.submenu a:hover {
background: #ccc;
color: #333;
}
</style>
<script type="text/javascript">
<!--
var menuE = [], currentE = null, timer = null;
window.onload = function(){
var e=document.getElementById('jumpmenu').getElementsByTagName('DIV');
for (var i=0,j=0; i<e.length; i++){
if (e[i].className=='menu') {
var mainE=getChild(e[i],'main'); var subE=getChild(e[i],'submenu');
if (mainE && subE){
menuE[j++]=e[i];
mainE.onmouseover = function(){ show(this);}
mainE.onmouseout = function(){ hide(this);}
subE.onmouseover = function(){ cancel();}
subE.onmouseout = function(){ hide(this);}
};};}
}
function show(e) {
cancel();
var subE = getChild(e.parentNode, 'submenu');
if (currentE && currentE != subE) currentE.style.visibility = 'hidden';
subE.style.visibility = 'visible';
currentE = subE;
}
function hide(e) {
var subE=getChild(e.parentNode,'submenu');
if (currentE == subE) timer = window.setTimeout(hidden,100);
}
function cancel() {
if (timer) {window.clearTimeout(timer); timer=null;}
}
function hidden(){
if (currentE) { currentE.style.visibility = 'hidden'; currentE = null;}
}
function getChild(elm, cnam){
var el = elm.firstChild;
var elm_c = null;
while (el){
if (el.className==cnam) { elm_c=el; break;}
el=el.nextSibling;
}
return elm_c;
}
// -->
</script>
</head>
<body>
<div id="jumpmenu">
<div class="menu"><img src="./A.jpg" width="80"></div>
<div class="menu">
<a href="#" class="main"><img src="./B.jpg" width="117"></a>
<div class="submenu">
<a href="#">メニュー1</a>
<a href="#">メニュー2</a>
<a href="#">メニュー3</a>
</div></div>
<div class="menu"><img src="./C.jpg" width="23"></div>
<div class="menu">
<a href="#" class="main"><img src="./D.jpg" width="117"></a>
<div class="submenu">
<a href="#">メニュー4</a>
<a href="#">メニュー5</a>
</div></div>
<br style="clear:left;">
</body>
</html>
No.3
- 回答日時:
No.1の者です。
私も試してみたところNo.2さんのおっしゃられる
通りきちんと表示されていると思います。
Versionは IE6.029です。
参考までに画像を添付しておきます。
![「jacascriptで作ったドロップダウ」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/17944147_5497e40a8c265/M.jpg)
確かに、表示はされるんです。
言い方が悪かったかもしれません。すいません。
ただ、クリックできないんです。
クリックしようとしてドロップダウンメニューにマウスを持っていくと
メニューが消えてしまうんです。
IE6だけ・・・。
半ば諦めかけてます・・・。
No.2
- 回答日時:
IE6.0.28で実験しましたが、再現しません。
『下の画像』がないので、HTMLに以下を付け加えています。
</td></tr></table>
<img src="a.jpg" width="800" />
</div>
DOCTYPE宣言なし、HTML 4.01 Strict、etc、XHTML 1.0などで実行しても全て下のa.jpgの上に表示されます。
ご質問文にはないCSSが関係していることはありませんか?
確かに、表示はされるんです。
言い方が悪かったかもしれません。すいません。
ただ、クリックできないんです。
クリックしようとしてドロップダウンメニューにマウスを持っていくと
メニューが消えてしまうんです。
IE6だけ・・・。
半ば諦めかけてます・・・。
No.1
- 回答日時:
cssにz-indexというプロパティがあって、表示が重なった場合にどの順に表示するかという奥行きを設定することができるので、プルダウンメニューを表示しているCSSにz-indexを設定して下の画像より前にくるようにすればよいと思いますよ。
参考URL:http://www.htmq.com/style/z-index.shtml​
z-indexプロパティは試しましたが
z-indexプロパティで指定しても、firefox、IE7は正常に動作しますが
IE6だとやはりダウンメニューが下の画像に隠れてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像の表示位置
-
ツリー型の目次作成
-
Colorboxがうまく設置できません
-
jQuery、画像を2箇所同時にロー...
-
jqueryで、後から追加した画像...
-
セレクトボックスで、リンクバ...
-
JavaScriptでの画像切り替えを...
-
javascript について追加の質問
-
htmlの中のhtmlをタブで切り替え
-
時間差で画像を動作させたいjav...
-
どの<li><a> が押されたか判別...
-
マウスオーバーのメニューについて
-
クリックで背景変更するタグ
-
「jQuery」アコーディオンメニ...
-
jqueryのsortableで一部ソート...
-
jQueryで画像を重ねる
-
JavaScript で flexslider の画...
-
[急ぎ] videoタグで埋め込んだm...
-
TABLEの高さを固定したいのですが…
-
high slideをFC2ブログで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
Javascript初心者|jQueryの.va...
-
デフォルト非表示にしたい。【t...
-
jQueryでのドラッグアンドドロ...
-
複数bxsliderをタブで切り替え...
-
画像の表示位置
-
JavaScriptでの画像切り替えを...
-
Colorboxがうまく設置できません
-
clear機能を失わずにファイルア...
-
embed要素のsrc属性の値を変更...
-
JQueryでオープニングアニメー...
-
全部のサイコロをjavascriptで...
-
一定時間で入れ替わるバナー画...
-
JQueryで画像の上で文字を動かす
-
スクリプト
-
画像拡大とともにエレメントも...
-
JavaScript スクロール制御
-
アップロードファイルの種類に...
-
サムネイルにカーソルを合わせ...
-
htmlの中のhtmlをタブで切り替え
おすすめ情報