【问题标题】:Fix position of horizontal second level HTML menu/list修复水平二级 HTML 菜单/列表的位置
【发布时间】:2013-02-06 18:04:08
【问题描述】:

您好,我有一个像这样的两级菜单

<ul>
  <li>MenuItem1</li>
  <li>MenuItem2</li>
  <li>MenuItem3
    <ul>
      <li>SubMenuItem3.1</li>
      <li>SubMenuItem3.2</li>
    </ul>
  </li>
</ul>

It's a horizo​​ntal menu aligned in the center of the page, and what I want to do is when the MenuItem3 is selected its submenu appears, and its item should appear below MenuItem3.我描述的是这样的:

MenuItem1   MenuItem2   MenuItem3
                          /\
             SubMenuItem3.1 SubMenuItem3.2

我已经完成了水平操作并出现了子菜单,但是 MenuItem3 的大小会增加以适应子菜单的大小。所以,我得到的是这样的:

MenuItem1   MenuItem2           MenuItem3
                                   /\
                      SubMenuItem3.1 SubMenuItem3.2

有没有办法解决这个问题?纯 CSS 有可能吗?

谢谢!


BenM 请求后,这是我目前使用的 CSS:

#menu ul {
    list-style: none;
    margin: 0;
    padding: 0; 
}

#menu > ul > li {
    position: relative;
    float: left;
}

#menu > ul > li > ul {
    list-style: none;
    margin: 0;
    padding: 0; 
}

#menu > ul > li > ul > li{
    position: relative;
    float: left;
}

--------------------------------------
编辑第 2 卷
--------------------------------------
根据 Sen Jacob 的建议,我对 one 进行了一些修改,因为我不知道每个顶部菜单项有多少个子项,所以我使用 Javascript 进行正确的中心对齐。特别是我使用了 JQuery 的 width() 和 position() 函数。我希望这是有道理的。

【问题讨论】:

  • 请向我们展示您的 CSS...
  • 用当前的 CSS 更新了原帖

标签: html css list html-lists


【解决方案1】:

您需要使li 包含子ul,这样做的方法是不要提前关闭您的li:

<li>MenuItem3</li>
    <ul>
      <li>SubMenuItem3.1</li>
      <li>SubMenuItem3.2</li>
    </ul>

变成

<li>MenuItem3
    <ul>
      <li>SubMenuItem3.1</li>
      <li>SubMenuItem3.2</li>
    </ul>
</li>

【讨论】:

  • 你说得对,我就是这样;我在原始帖子上犯了一个错误。谢谢
【解决方案2】:

您是否正在努力实现这一目标?

CSS3 Family Tree

试试下面的样式,jsFiddle

#menu ul {
    width:auto;
    clear:both;
    display:block;
    list-style: none;
    margin:0 auto;
}
ul li {
    display: inline-block;
    position: relative;
    text-align:center;
    padding: 2px;
}
li ul {
    position: relative;
    display:inline;
    top:25px;
    right:50%;
}

【讨论】:

  • 这更像是您发布的第一个(家谱),但我希望每个父母的位置都是“固定”的,不管他们的孩子。
  • 非常感谢您的更新。这就是它现在的样子。您是否看到 MenuItem3 在右侧“移动”以包含其子菜单?我希望它与 MenuItem2 保持 2px (如在您的 CSS 中)的右侧(例如 MenuItem2 与 MenuItem1 保持 2px 右侧)。换句话说,我想将整个 Menu3 向左移动。我希望这是有道理的。如果没有,请告诉我,我会尝试上传图片。谢谢
  • 谢谢!它非常适用于顶部菜单的最后一个菜单项。但是,如果子菜单是第二个菜单项的一部分呢?例如,如果我们有 &lt;ul&gt; &lt;li&gt;MenuItem1&lt;/li&gt; &lt;li&gt;MenuItem2 &lt;ul&gt; &lt;li&gt;SubMenuItem3.1&lt;/li&gt; &lt;li&gt;SubMenuItem3.2&lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;MenuItem3&lt;/li&gt; &lt;/ul&gt;
  • 我发现了一个类似的问题here。希望这会有所帮助。
  • 谢谢!我仍然在子菜单项的正确中心对齐方面遇到问题,所以我也使用了 javascript。特别是,我使用了 JQuery 的 width() 和 position() 函数。
猜你喜欢
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多