我想弄清楚为什么我无法浏览通过键盘使用多个无序列表的菜单。
有没有人有任何提示?我感觉它比CSS更像是一个CSS问题。
相关CSS:
/* MENU */
#cssmenu{
border:none;
border:0px;
margin:0px;
padding:0px;
font: 67.5% 'Lucida Sans Unicode', 'Bitstream Vera Sans', 'Trebuchet Unicode MS', 'Lucida Grande', Verdana, Helvetica, sans-serif;
font-size:11px;
font-weight:bold;
}
#cssmenu ul{
background:#333333;
height:39px;
list-style:none;
margin:0;
padding:0;
display: table;
width: 100%;
}
#cssmenu li{
padding:0px;
display: table-cell;
width: 115px;
}
#cssmenu li a{
background:#333333 url('../images/seperator.gif') bottom right no-repeat;
color:#FFF;
display:block;
font-weight:normal;
line-height:39px;
margin:0px;
padding:0px 0px;
text-align:center;
text-decoration:none;
width: 115px;
}
#cssmenu li a:hover, #cssmenu ul li:hover a{
background: #2580a2;
color:#FFFFFF;
text-decoration:none;
float: none;
}
#cssmenu li ul{
background:#333333;
display:none;
height:auto;
padding:0px;
margin:0px;
border:0px;
position:absolute;
width:230px;
z-index:200;
/*top:1em;
/*left:0;*/
}
#cssmenu li:hover ul{
display:block;
}
#cssmenu li li {
background:url('../images/sub_sep.gif') bottom left no-repeat;
display:block;
float:none;
margin:0px;
padding:0px;
width:230px;
}
#cssmenu li:hover li a{
background:none;
}
#cssmenu li ul a{
display:block;
height:35px;
font-size:10px;
font-style:normal;
margin:0px;
padding:0px 10px 0px 15px;
text-align:left;
width: 205px;
}
#cssmenu li ul a:hover, #cssmenu li ul li:hover a{
background:#2580a2 url('../images/hover_sub.gif') center left no-repeat;
border:0px;
color:#ffffff;
text-decoration:none;
width: 205px;
}
#cssmenu p{
clear:left;
}
:focus {outline:none;}
::-moz-focus-inner {border:0;}
相关HTML代码:
<div id="cssmenu"> <ul> <li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:HOMEPAGE:2059103169:pc=PC_90001">Home</a></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90002">Operations</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90003">Individuals</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90123">Aircraft owners</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90276">Aircraft operators </a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90389">Flight training</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90405">Aerodromes</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90447">Office of airspace regulation</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_93439">Sport aviation</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_93379">Class D</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100058">Non-towered aerodromes</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90385">Dangerous goods</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100808">Ground operations</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100847"> Non-compliance notice </a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100374">Unmanned Aircraft Systems (UAS) </a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100705">General Aviation (GA) task force</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100852">Regional Aviation Safety Forum (RASF)</a>
</li>
<li><a href="http://casa.gov.au/aod" target="_top">Drug and Alcohol Management Plans</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90473">Airworthiness</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100610">Maintenance regulations</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90474">Personnel</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90496">Certification and design</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90507">Manufacturing</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90515">Continuing airworthiness</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90822">Airworthiness directives</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90821">Maintenance organisations</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_101038">Flight test and evaluation</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90900">Regulations & policy</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90902">Current rules</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:PWA:2059103169:pc=PC_91070">Changing the rules</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91181">Enforcement action</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:PWA:2059103169:pc=PC_91190">Policy notices</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100396">Australia's state safety program</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_101078">Performance based navigation (PBN)</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_101326">Licensing regulations</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91263">Manuals & forms</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91264">Manuals</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91308">Forms</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91316">CASA online store</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91314">Education</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_101349">AviationWorx</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100101">eLearning catalogue</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91346">Flight Safety Australia</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_90006"> Pilot guides and information </a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100138">OnTrack</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100994">Human factors</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91430">Safety management systems</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91329">Seminars and workshops</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91317">Aviation safety advisers</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91455">Advice for air travellers</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91316">CASA online store</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_101317">Out-n-Back</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91488">Services</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91489">Licences and registrations</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91510">Service standards and fees</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:PWA:2059103169:pc=PC_91499">Self Service Portal</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91517">Permission application centre (PAC)</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91521">Aviation medicals</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100450">Delegates and authorised persons</a>
</li>
</ul></li>
<li class="has-sub"> <a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91621">About CASA</a> <ul>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91622">Contact CASA</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_93342">CASA board</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91668">CASA's Director</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_91703">Recent media releases </a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_92568">Corporate publications</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100448">CASA on Twitter</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_92918">Corporate policy</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_92936">Careers at CASA</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_92956">Research and statistics</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100223">International Engagement</a>
</li>
<li><a href="HTTP://wcmsdev/scripts/nc.dll?WCMS:STANDARD:2059103169:pc=PC_100330">CASA mailing lists</a>
</li>
</ul></li>
</ul>
</div>
答案 0 :(得分:2)
它不起作用,因为您只有键盘不会触发的:hover
规则。当一个元素具有标签焦点时,它具有:focus
伪类,当你添加它时,你会注意到你的菜单项在聚焦时亮起但仍然没有打开菜单。
jsFiddle: With :focus
rules along side :hover
rules
这是由于以下规则:
#cssmenu li:hover ul,
#cssmenu li:focus ul{
display:block;
}
li
实际上从未获得焦点,因为它没有标签索引,a
内的li
获得焦点。由于li
是ul
的父级,但a
是[{1}}的兄弟,我们需要使用其他规则才能使此定位生效。我们可以使用下一个兄弟选择器ul
根据+
定位ul
。这让我们更近了一步。
a:focus
jsFiddle with the above applied
不幸的是,这就是你可以使用CSS(据我所知)。当我们尝试转到下一个#cssmenu li:hover ul,
#cssmenu li a:focus + ul{
display:block;
}
时,a
将被放置在顶级:focus
上,并且菜单将隐藏,因为子菜单将丢失a
。由于我们在应用样式时无法遍历树,因此当display:block;
display:block
进一步向下时,我们无法将ul
应用于祖先:focus
。
我能看到解决这个问题的唯一方法是使用JavaScript并处理顶级菜单项的a
(可能是focus
)事件。然后,我们还必须处理blur()
事件,以便在单击文档中的任何位置时隐藏菜单,否则它将保持活动状态。
<强> CSS 强>
click()
<强> JS 强>
#cssmenu li.force-show ul,
#cssmenu li:hover ul,
#cssmenu li a:focus + ul{
display:block;
}
答案 1 :(得分:0)
问题是,CSS中的focus
没有冒泡。我最近来的是this:
/* for instance use it that way */
#cssmenu li a:hover,
#cssmenu li a:focus,
#cssmenu ul li:hover a,
#cssmenu ul li:focus a { }
该示例适用于第一级。但是当进入第二个时,第一个丢失了:focus
,因此子菜单再次被隐藏。我想你需要对JavaScript有所帮助。