このような質問をすると怒られることは承知していますが、セレクターは初めてで、既存の UL に埋め込まれた子 UL のホバー効果に苦労しています。
HTML:
<ul id="ctxMenuStock">
<li><a href="#ctxCMDCopy">Copy</a></li>
<li><a href="#ctxCMDReserve">Reserve/Outgoing</a></li>
<li><a href="#">Set Status <span style="font-family: Webdings">6</span></a>
<ul id="ctxMenuStockStatuses" runat="server"></ul>
</li>
</ul>
ctxMenuStockStatuses は、ページの読み込み時にサーバー コードによって入力されます。
CSS:
#ctxMenuStock, #ctxMenuStock ul, #ctxMenuPending, #ctxMenuPending ul{
display:none;
margin:0;
padding:0;
list-style-type:none;
list-style-position:outside;
position:fixed;
line-height:1.5em;
}
#ctxMenuStock a:link, #ctxMenuStock hr, #ctxMenuStock a:active, #ctxMenuStock a:visited, #ctxMenuPending a:link, #ctxMenuPending hr, #ctxMenuPending a:active, #ctxMenuPending a:visited{
display:block;
padding:0px 5px;
color:#fff;
text-decoration:none;
background-color:#333;
}
#ctxMenuStock>li:hover ul, #ctxMenuStock>li:hover ul li, #ctxMenuStock>li:hover ul li a
{
color:#fff;
background-color:#333;
}
#ctxMenuStock>li:hover a, #ctxMenuPending>li:hover a{
background-color:#fff;
color:#333;
}
#ctxMenuStock ul li ul li a:hover, #ctxMenuPending ul li ul li a:hover{
background-color:#fff;
color:#333;
}
#ctxMenuStockStatuses li
{
color:#fff;
background-color:#333;
}
#ctxMenuStockStatuses li:hover
{
background-color:#fff;
color:#333;
}
#ctxMenuStock li, #ctxMenuPending li{
float:none;
position:relative;
}
#ctxMenuStock ul, #ctxMenuPending ul {
position:absolute;
display:none;
float:left;
}
#ctxMenuStock li ul a, #ctxMenuPending li ul a
{
width:12em;
margin: 0 0 0 4px;
float:left;
}
#ctxMenuStock ul ul, #ctxMenuPending ul ul{
top:auto;
}
#ctxMenuStock li ul ul, #ctxMenuPending li ul ul {
left:12em;
margin:0px 0 0 10px;
}
#ctxMenuStock li:hover ul ul, #ctxMenuStock li:hover ul ul ul, #ctxMenuStock li:hover ul ul ul ul{
display:none;
}
#ctxMenuStock li:hover ul, #ctxMenuStock li li:hover ul, #ctxMenuStock li li li:hover ul, #ctxMenuStock li li li li:hover ul{
display:block;
}
#ctxMenuPending li:hover ul ul, #ctxMenuPending li:hover ul ul ul, #ctxMenuPending li:hover ul ul ul ul{
display:none;
}
#ctxMenuPending li:hover ul, #ctxMenuPending li li:hover ul, #ctxMenuPending li li li:hover ul, #ctxMenuPending li li li li:hover ul{
display:block;
}
メニューは基本的に暗い背景に白いテキストのスタイルですが、ホバーするとこれが反転します。これは親メニューでは問題なく機能しますが、子メニューは変更されず、黒地に白のままです。
この CSS のいくつかが互いに矛盾していることは知っていますが、理解するのが難しくなっています。サブメニューでこれを行う方法の実際の例をオンラインで(もしあれば)たくさん見つけることができないようです。
誰かがこれに対する最善のアプローチを教えてください。
編集: 要求に応じて、JSFiddle の例が作成されました: http://jsfiddle.net/KzhEP/ 私のメイン プロジェクトでは、oncontextmenu 属性がサーバー側のテーブルの各行にアタッチされています。簡単な例をモックアップしましたが、何らかの理由で、jsfiddle で右クリック機能が動作しません。