我正在尝试使用纯 CSS 创建下拉导航,并且我想在 ul 单击时显示下拉菜单。问题是简单的 ul:focus > ul 不起作用,即使其中有 anchor 。选择器 :hover 和 :active 工作正常。
HTML
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub Menu 1</a></li>
<li><a href="#">Sub Menu 2</a></li>
<li><a href="#">Sub Menu 3</a></li>
<li><a href="#">Sub Menu 4</a>
</ul>
</li>
CSS
#primary_nav_wrap ul li:hover > ul
{
display:block
}
最佳答案
您的选择器需要是 #primary_nav_wrap ul li > a:focus + ul
.
分解:
When the
<a>
directly inside the<li>
has focus, apply these styles to the immediately adjacent<ul>
.
固定示例:
#primary_nav_wrap {
margin-top: 15px
}
#primary_nav_wrap ul {
list-style: none;
position: relative;
float: left;
margin: 0;
padding: 0
}
#primary_nav_wrap ul a {
display: block;
color: #333;
text-decoration: none;
font-weight: 700;
font-size: 12px;
line-height: 32px;
padding: 0 15px;
font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif
}
#primary_nav_wrap ul li {
position: relative;
float: left;
margin: 0;
padding: 0
}
#primary_nav_wrap ul li.current-menu-item {
background: #ddd
}
#primary_nav_wrap ul li:hover {
background: #f6f6f6
}
#primary_nav_wrap ul ul {
display: none;
position: absolute;
top: 100%;
left: 0;
background: #fff;
padding: 0
}
#primary_nav_wrap ul ul li {
float: none;
width: 200px
}
#primary_nav_wrap ul ul a {
line-height: 120%;
padding: 10px 15px
}
#primary_nav_wrap ul ul ul {
top: 0;
left: 100%
}
#primary_nav_wrap ul li > a:focus + ul {
display: block
}
<h1>Testing menu</h1>
<nav id="primary_nav_wrap">
<ul>
<li class="current-menu-item"><a href="#">Home</a>
</li>
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub Menu 1</a>
</li>
<li><a href="#">Sub Menu 2</a>
</li>
<li><a href="#">Sub Menu 3</a>
</li>
<li><a href="#">Sub Menu 4</a>
<ul>
<li><a href="#">Deep Menu 1</a>
<ul>
<li><a href="#">Sub Deep 1</a>
</li>
<li><a href="#">Sub Deep 2</a>
</li>
<li><a href="#">Sub Deep 3</a>
</li>
<li><a href="#">Sub Deep 4</a>
</li>
</ul>
</li>
<li><a href="#">Deep Menu 2</a>
</li>
</ul>
</li>
<li><a href="#">Sub Menu 5</a>
</li>
</ul>
</li>
<li><a href="#">Menu 2</a>
<ul>
<li><a href="#">Sub Menu 1</a>
</li>
<li><a href="#">Sub Menu 2</a>
</li>
<li><a href="#">Sub Menu 3</a>
</li>
</ul>
</li>
<li><a href="#">Menu 3</a>
<ul>
<li class="dir"><a href="#">Sub Menu 1</a>
</li>
<li class="dir"><a href="#">Sub Menu 2 THIS IS SO LONG IT MIGHT CAUSE AN ISSEUE BUT MAYBE NOT?</a>
<ul>
<li><a href="#">Category 1</a>
</li>
<li><a href="#">Category 2</a>
</li>
<li><a href="#">Category 3</a>
</li>
<li><a href="#">Category 4</a>
</li>
<li><a href="#">Category 5</a>
</li>
</ul>
</li>
<li><a href="#">Sub Menu 3</a>
</li>
<li><a href="#">Sub Menu 4</a>
</li>
<li><a href="#">Sub Menu 5</a>
</li>
</ul>
</li>
<li><a href="#">Menu 4</a>
</li>
<li><a href="#">Menu 5</a>
</li>
<li><a href="#">Menu 6</a>
</li>
<li><a href="#">Contact Us</a>
</li>
</ul>
</nav>
关于html - 在 ul :focus 上切换下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945660/