html - CSS 忽略一个子元素的宽度

标签 html css menu html-lists

我有一个 HTML 菜单,其中包含列表项和子菜单:

* {
  margin: 0;
  padding: 0;
}
#navi {
  width: 500px;
  height: 50px;
  margin: 0 auto;
  position: relative;
  background-color: lightcoral;
}
#navi > ul {
  right: 0;
  list-style: none;
  position: absolute;
}
#navi > ul li {
  text-align: right;
  margin-left: 10px;
  margin-right: 10px;
  white-space: nowrap;
  background-color: lightblue;
}
#navi > ul li,
#navi > ul li * {
  height: 50px;
  line-height: 50px;
  vertical-align: top;
  display: inline-block;
}
#navi > ul li ul {
  display: block;
  white-space: nowrap;
<div id="navi">
  <ul>
    <li>
      <a>top level a</a>
      <ul>
        <li>
          <li>
            <a>a sub level a</a>
          </li>
          <li>
            <a>a sub level b</a>
          </li>
      </ul>
      </li>
      <li>
        <a>top level b</a>
        <ul>
          <li>
            <a>b sub level a</a>
          </li>
        </ul>
      </li>
  </ul>
</div>

我希望子菜单水平位于顶级菜单下方。子菜单应出现在悬停时并与父列表项元素一起定位。

所有隐藏和显示的内容都已完成,除了一个问题外,我的菜单可以正常工作。

我希望子菜单 (ul) 影响父元素的宽度,以便顶部菜单项彼此相邻,子菜单在下面展开。

我需要告诉 li 元素将其宽度基于第一个子元素 (a) 并忽略子菜单 ul 的宽度> 元素。

而且我不想使用 JavaScript 或类似的东西,一个简单的 CSS 解决方案就太棒了!

我怎样才能实现这个目标?

最佳答案

定位子菜单绝对可以满足您的要求。

演示:http://jsfiddle.net/v3xLkvke/1/

注释掉position属性将改变包含的li的宽度。

关于html - CSS 忽略一个子元素的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345769/

相关文章:

javascript - 是否可以在 Mousetracker 中进行输入?

javascript - 在动态生成的处理函数中访问 javascript 对象属性

css - Woocommerce 的显示问题

javascript - 如果一个 div 有这两个类,隐藏包装器

javascript - 我在哪里可以找到包含图像和文本详细信息的 super 下拉菜单?

android - 如何在 android 中为注册用户和非注册用户显示不同的菜单项?

html - 在静态页面上水平滚动下拉菜单

c# - 拉出一些div标签并用c#放入json或xml文件格式

css - Div 重叠但仅在 Firefox 中

java - 滑出菜单android java