html - 在 ul :focus 上切换下拉菜单

标签 html css

我正在尝试使用纯 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
}

代码如下: https://codepen.io/anon/pen/vgpQWV

最佳答案

您的选择器需要是 #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/

相关文章:

javascript - 在 Canvas 的底部边缘绘画时图案会移动

javascript - href ="#"或 href ="javascript:void();"哪个更好

html - Bootstrap 网站在浏览器中看起来不错,但 div 在移动设备中无法正确呈现

javascript - 如何创建多个高度为 100% 的 div?

html - 嵌套 div 内的 CSS 填充

css - 与视频标签垂直对齐

javascript - 似乎无法运行此 AJAX 代码

javascript - 如何使用 jQuery/Css 格式化 div 中的文本

css - `p-N` 及其变体在 Bootstrap v4 中代表什么?

html - 表格在其他浏览器中显示不佳