【发布时间】:2017-10-19 15:45:48
【问题描述】:
当使用键盘切换时,似乎无法显示(焦点)下拉链接。尝试了几种不同的风格,但没有运气。任何帮助将不胜感激。
body {
background: #005bbb;
font: 14px Sofia,Arial,sans-serif;
color: #444;
height: 100%;
line-height: 1;}
.nav-global a {text-decoration: none}
.nav-global ul li {
color: #005bbb;
float: left;
display: inline;
position: relative;
margin: 0;
width: 235px}
.nav-global ul li:hover {
background-color: #003e51;}
/* style the first level slightly different */
.nav-global > ul > li {
margin: 0;
width: auto;
background: #fff;
color: #005bbb}
.nav-global ul li a {
color: #005bbb;
padding: 12px 16px 14px 16px;
display: block;
font: 15px Sofia Bold, "Trebuchet MS", sans-serif;}
.nav-global ul li a:hover {
color: #fff}
.nav-global > ul > li > a {}
.nav-global li:hover > a {color: #fff}
/* ----------------------------------------------- secondary nav ----------------------------------------------- */
.nav-global ul li ul {
position: absolute;
max-height: 0;
overflow: hidden;
margin: 0;
opacity: 0;}
.nav-global ul li:hover > ul {
max-height: 1000px;
overflow: visible;
opacity: 1;}
.nav-global ul li ul li {
background-color: #003e51;}
.nav-global ul li ul li a {
color: #fff;
font: 13px Sofia, "Trebuchet MS", sans-serif;
padding: 0;
line-height: 30px;
text-indent: 15px;}
.nav-global ul li ul li a:hover {
background: #002935;}
.nav-global ul li ul li:first-child {
padding-top: 10px}
.nav-global ul li ul li:last-child {
padding-bottom: 10px}
.
<div class="nav-main">
<nav class="nav-global">
<ul>
<li><a href="/findmaterials" class="find">Find Materials</a>
<ul>
<li><a href="/findmaterials/everything">Everything</a></li>
<li><a href="http://catalog.lib.buffalo.edu/">Catalog</a></li>
<li><a href="/findmaterials/databases">Databases</a></li>
<li><a href="/findmaterials/ebooks">E-Books</a></li>
<li><a href="http://ll3md4hy6n.search.serialssolutions.com">E-Journals</a></li>
<li><a href="/reserve">Course Reserve</a></li>
<li><a href="/off-campus">Off Campus Access</a></li>
</ul>
</li>
</ul>
</nav>
</div>
=
我尝试将这样的代码用于“聚焦”,但不起作用:
.nav-global ul li:focus > ul {
max-height: 1000px;
overflow: visible;
opacity: 1;}
【问题讨论】:
-
请尝试创建Minimal, Complete and Verifiable example。仅仅链接到您的网站是不够的。
-
这不是我的网站。只是导航本身。没有别的了。
-
明白,但您仍然应该能够生成一个最小示例并提供代码,以便其他人可以帮助您。
-
我把它放到了 JSFiddle 中。
-
首先,
li本身不能成为焦点元素——你需要给它一个 tabindex,它才能获得焦点。其次,:focus不适合显示子导航 - 因为只要用户点击子导航内的第一个链接,li就会松开焦点。您真正想要的是:focus-within- 但请注意浏览器支持。 developer.mozilla.org/en-US/docs/Web/CSS/:focus-within, caniuse.com/#feat=css-focus-within 长话短说,如果你现在想要体面的浏览器支持 - 你想要一个 JavaScript 解决方案。