带有 CSS 悬停的 HTML 菜单

标签 html css

我正在制作 HTML 菜单。

我对“L3 子菜单”(Item-221、Item-222)有疑问。

当我将鼠标“移入”Item-22 时,会显示 L3。没关系。

但我无法单击 Item-221 或 Item-222。 如果我“鼠标移出”Item-22,那么 L3 就会消失。

是否有(仅)CCS 的解决方案?

CSS 代码:

  ul {
    background-color: #c4c4c4;
    list-style-type: none;
    display: flex;
  }
  li {
    padding: 5px 10px 5px 10px;
    white-space: nowrap;
    position: relative;
  }
  li:hover {
    background-color: #02DB02;
  }
  .menu li>ul {
    padding: 10px 13px 10px 13px;
    position: absolute;
    display: none;
    top: calc(100%);
    left: -8px;
  }
  #it_2:hover #ul_2, #it_22:hover #ul_3 {
    display: block;
  }
  .menu>li>ul>li>ul {
    top: -0.5em;
    left: calc(100% + 10px);
  }

HTML 代码:

<ul class="menu">
  <li>Item-1</li>
  <li id="it_2">Item-2
    <ul id="ul_2">
      <li>Item-21</li>
      <li id="it_22">Item-22
        <ul id="ul_3">
          <li>Item-221</li>
          <li>Item-222</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Item-3</li>
</ul>

最佳答案

最好在列表项上添加填充,这样子菜单就不会消失

ul {
    background-color: #c4c4c4;
    list-style-type: none;
    display: flex;
  }
  li {
    padding: 5px 10px 5px 10px;
    white-space: nowrap;
    position: relative;
  }
  li:hover {
    background-color: #02DB02;
  }
.menu ul > li  {
  position:relative;
  padding: 0 13px 0 13px;
}
  .menu li>ul {
    padding: 10px 0 10px 0;
    position: absolute;
    display: none;
    top: calc(100%);
    left: -8px;
  }
  #it_2:hover #ul_2, #it_22:hover #ul_3 {
    display: block;
  }
  .menu>li>ul>li>ul {
    position: absolute;
    top: -0.5em;
    left: calc(100%);
    padding: 1em;
  }
<ul class="menu">
  <li>Item-1</li>
  <li id="it_2">Item-2
    <ul id="ul_2">
      <li>Item-21</li>
      <li id="it_22">Item-22
        <ul id="ul_3">
          <li>Item-221</li>
          <li>Item-222</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Item-3</li>
</ul>

关于带有 CSS 悬停的 HTML 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73259625/

相关文章:

javascript - 将用户选择限制为节点而不使其可编辑?

javascript - Bootstrap - 使菜单扩展到页面高度

html - 画廊图像的 float

javascript - 调整大小和计算高度 - 错误

html - CSS 旋转图像

html - 为什么这些元素不垂直对齐?

html - 用css绘制不规则形状(应该是响应式的)

javascript - 如何管理具有多个 View (或部分)的单页 Chrome 应用

调整大小时的 CSS Float : unwanted pushdown of element (cause of margin/padding) (responsive design)

javascript - 为什么这种转变不起作用?