【问题标题】:why my sub menu is not working in html css为什么我的子菜单在 html css 中不起作用
【发布时间】:2020-07-12 00:50:48
【问题描述】:

我已经创建了运行良好的导航栏,但现在我尝试在导航栏中添加子菜单,并且在悬停时不显示子菜单。请检查并纠正我。

首先我在<li> 标签中添加了<ul>,然后我添加了css来隐藏嵌套的<ul>,然后我尝试在悬停<li>时显示<ul>

*{
  margin: 0;
  padding: 0;
}


nav{
  background-color: red;
}

ul{

  background-color: purple;
  width: 50%;	
}

nav ul li {
  list-style: none;
  padding: 5px;
  display: inline-block;   
}
nav ul li a{
  text-decoration: none;
  color:black;
font: bold 12px Arial;      
}

nav ul li:hover{
  background-color: blue;
  color: red;
}

nav ul li:hover a{

  color: red;
}

ul li ul {
  display: none;
  position:absolute;
}

nav ul li:hover ul {
    display:block;
}
<nav>
    <ul>
        <li> <a href="">Home</a></li>
        <li> <a href="">About Us</a></li>
        <li> <a href="">Contact Us</a></li>
        <li> <a href="">Privacy Policy</a></li>
        <li>
            <ul>
                <li><a href="">Submenu 1</a></li>
                <li><a href="">Submenu 2</a></li>
                <li><a href="">Submenu 3</a></li>
                <li><a href="">Submenu 4</a></li>
            </ul>
        </li>
    </ul>
</nav>

【问题讨论】:

标签: html css


【解决方案1】:

看起来您的 &lt;li&gt; 换行不正确!

这里是fiddle

Privacy Policy 之后,您创建了另一个不需要的&lt;li&gt;。你必须用privacy policy标签包裹子菜单而不是新标签,这是css没有按预期显示数据的原因之一,你几乎就在那里CSS我刚刚为你修好了!希望有帮助。

* {
  margin: 0;
  padding: 0;
}

nav {
  height: 30px;
}

nav ul {
  display: block;
  position: relative;
  z-index: 100;
}

nav ul li {
  float: left;
  list-style: none;
  margin: 0;
  padding: 0;
}

nav ul li ul {
  display: none;
}

nav ul li a {
  width: 100px;
  height: 30px;
  display: block;
  text-decoration: none;
  text-align: center;
  line-height: 30px;
  background-color: black;
  color: white;
}

nav ul li a:hover {
  background-color: red;
}

nav ul li:hover ul {
  position: absolute;
  top: 30px;
  display: block;
  width: 100px;
}

nav ul li:hover ul li {
  display: block;
}
<nav>
  <ul>
    <li> <a href="#">Home</a></li>
    <li> <a href="#">About Us</a></li>
    <li> <a href="#">Contact Us</a></li>
    <li> <a href="#">Privacy Policy</a>
      <ul>
        <li><a href="#">Submenu 1</a></li>
        <li><a href="#">Submenu 2</a></li>
        <li><a href="#">Submenu 3</a></li>
      </ul>
    </li>
  </ul>
</nav>

【讨论】:

  • 如果您的下拉问题已解决,但未在其父链接下方显示子菜单,我的意思是隐私政策链接
  • 你需要精确到父li下面吗?
  • @barbiequeen 我添加了小提琴并修复了 SO UI 中的问题。让我知道。
  • 哇它的工作。你只添加了 top:30px 吗?或者你也改变了其他什么影响?
  • 不,我认为 SO UI 和提琴手有边界差异,我只是添加了这个 * { margin: 0; padding: 0; } 没有别的。
【解决方案2】:

你为什么不从这个工作的 sn-p 开始,并尝试根据你的需要更改数据:)

HTML Sub-Nav

【讨论】:

  • 太好了,我只是想自学。我不想只是复制粘贴这就是为什么
【解决方案3】:

   *{
    margin: 0;
    padding: 0;
}


nav{
    background-color: red;
}

ul{

    background-color: purple;
    width: 50%; 
}

nav ul li {
    list-style: none;
    padding: 5px;
    display: inline-block;   
}
nav ul li a{
    text-decoration: none;
    color:black;
font: bold 12px Arial;      
}

nav ul li:hover{
    background-color: blue;
    color: red;
}

nav ul li:hover a{

    color: red;
}

ul li ul {
    display: none;
    position:absolute;
}

nav ul li:hover ul {
    display:block;
}
<nav>
<ul>
    <li> <a href="">Home</a></li>
    <li> <a href="">About Us</a></li>
    <li> <a href="">Contact Us</a></li>
    <li> <a href="">Privacy Policy</a></li>
    <li>
        <a href="">test</a>
        <ul>
            <li><a href="">Submenu 1</a></li>
            <li><a href="">Submenu 2</a></li>
            <li><a href="">Submenu 3</a></li>
            <li><a href="">Submenu 4</a></li>
        </ul>
     </li>
        

</ul>

【讨论】:

  • css和我的一样,你改了什么?刚刚在
  • 之后添加了 ?
  • 我更改了 html,你应该为子菜单添加一个链接。
  • 呵呵,我犯了一个多么愚蠢的错误。谢谢,现在它没有完全显示在该链接的下方,但左字和上字有点多。
  • 【解决方案4】:

    您必须在您创建的子导航中添加一个锚标记。因为目前这些子选项卡已创建但未与任何超级选项卡关联。

    &lt;a href=""&gt;Subnav&lt;/a&gt;

    因此,将其添加到您的子导航代码上方。你可以走了。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签