0

このWebサイトからドロップダウンメニューを作成するサンプルコードをいくつか取りました: http://www.javascriptkit.com/script/script2/verticalmenu.shtml

メインメニューが(緑色の繰り返しの代わりに)独自の画像を使用し、ドロップダウンメニューが(緑色の繰り返しの代わりに)大きな灰色のブロックになるように編集しています。

メイン メニューに独自の画像を挿入でき、グレーのブロック ロールオーバー ドロップダウン メニューも成功しました。

問題:ページをテストすると、ドロップダウン メニューが開いた状態で開始されます。問題は CSS/HTML 操作のどこかにあると思います。私のjavascriptで何が起こっているかを変更する必要がありますか? ULタグを呼び出していることに気づきました。

これは、ページをロードしたときの画像です。

http://imageshack.us/photo/my-images/850/hoverproblem.png/

これは、ロールオーバー後に適切に機能している画像です。

http://imageshack.us/photo/my-images/152/hoverproblem2.png/

HTML:

<ul id="verticalmenu" class="glossymenu">
<li style="height:30px;"><a href="#" style="text-decoration:none;"></a>
  <ul id="submenu">
    <li id="submenuli"><a href="#" style="color:white; font: bold 12px Verdana, Helvetica,    sans-serif;">JavaScript Reference</a></li>
    <li id="submenuli"><a href="#">DOM Reference</a></li>
    <li id="submenuli"><a href="#">CSS Reference</a></li>
  </ul>
</li>

CSS:

.glossymenu, .glossymenu li ul {
list-style-type: none;
margin: 0;
padding: 0;
width: 276px; /*WIDTH OF MAIN MENU ITEMS*/
height: 30px;
}

.glossymenu li{
position: relative;
}

.glossymenu li ul{
background: url(../Kruger%20Optical/images/tacdriver/riflenav.png);
font: bold 12px Verdana, Helvetica, sans-serif;
color: white;
display: block;
width: 276px;
height: 30px;
text-decoration: none;
}

/* SUBMENU AND SUBMENULI は、ページを読み込んだときに表示され続けるドロップダウン メニューです */

#submenu { /*SUB MENU STYLE*/
position: absolute;
background-color: #373737;
height: 300px;
width: 300px; /*WIDTH OF SUB MENU ITEMS*/
left: 0;
top: 0;
display: hidden;
}

#submenuli {
position: relative;
list-style-type: none;
margin: 0;
width: 300px; /*WIDTH OF MAIN MENU ITEMS*/
height: 20px;
display: hidden;
padding:15px;
font: bold 12px Verdana, Helvetica, sans-serif;
color: white;
float: left;
}

.glossymenu li ul li{
float: left;
}

ジャバスクリプト:

var menuids=new Array("verticalmenu") //Enter id(s) of UL menus, separated by commas
var submenuoffset=-2 //Offset of submenus from main menu. Default is -2 pixels.

function createcssmenu(){
for (var i=0; i<menuids.length; i++){
  var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
    for (var t=0; t<ultags.length; t++){
    var spanref=document.createElement("span")
    spanref.innerHTML="&nbsp;&nbsp;"
    ultags[t].parentNode.getElementsByTagName("a")[0].appendChild(spanref)
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")    [0].style.left=this.parentNode.offsetWidth+submenuoffset+"px"
this.getElementsByTagName("ul")[0].style.display="block"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.display="none"
    }
    }
      }
}


if (window.addEventListener)
window.addEventListener("load", createcssmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", createcssmenu)
4

2 に答える 2

1

に設定display: block;しました#submenu。これは、レンダリング エンジンにブロック要素として表示するように指示します。ページが最初に読み込まれるときに非表示にするため、スタイルシートには次のルールを含める必要があります#submenu

display: none;

次に、ユーザーがメイン メニュー バー#submenuの要素の上にマウスを置いたときに表示されるようにする JavaScript のスニペットが必要になります。<li>

于 2012-07-15T23:31:36.380 に答える
0

の表示をに設定する#submenunone、問題が解決するはずです。

于 2012-07-16T00:24:19.787 に答える