html - 将鼠标悬停在下拉元素上时,导航栏元素会轻微移动

标签 html css navbar

下面是我制作的简单导航栏的 html 代码。我的问题是,当我将鼠标悬停在产品链接上以显示下拉元素时,所有其他导航栏元素都会向左移动。我意识到我可能会以错误的方式解决这个问题,因为我还在学习。

.main-nav {
  border: 1px solid blue;
  text-align: center;
  display: block;
  position: absolute;
  width: 100%;
}

.main-nav li {
  display: inline-block;
  margin-right: 20px;
  border: 1px solid orange;
}

.main-nav ul {
  list-style: none;
  display: block;
  grid-gap: 10px;
}

.products li {
  display: block;
  border: 1px solid black;
}

.products-list a {
  border: 1px solid purple;
  height: auto;
  display: block;
  margin-top: 20px;
}

.products a {
  display: none;
}

.products {
  position: absolute;
}

.products-list:hover .products a {
  display: block;
}
<div class="wrapper">
  <nav class="main-nav">
    <ul>
      <li><a href="#">HOME</a></li>
      <li><a href="#">ABOUT</a></li>
      <li class="products-list"><a href="#">PRODUCTS</a>
        <ul class="products">
          <li><a href="#">item1</a></li>
          <li><a href="#">item2</a></li>
          <li><a href="#">item3</a></li>
          <li><a href="#">item4</a></li>
        </ul>
      </li>
      <li>
        <li><a href="#">SERVICES</a></li>
        <li><a href="#">CONTACT</a></li>

    </ul>
  </nav>

  <!--   wrapper ends   -->
</div>

注意:我为某些元素提供了边框以帮助我定位它们。

最佳答案

你在 service 之前添加了额外的 li

.main-nav {
  border: 1px solid blue;
  text-align: center;
  display: block;
  position: absolute;
  width: 100%;
}

.main-nav li {
  display: inline-block;
  margin-right: 20px;
  border: 1px solid orange;
}

.main-nav ul {
  list-style: none;
  display: block;
  grid-gap: 10px;
}

.products li {
  display: block;
  border: 1px solid black;
}

.products-list a {
  border: 1px solid purple;
  height: auto;
  display: block;
  margin-top: 20px;
}

.products a {
  display: none;
}

.products {
  position: absolute;
}

.products-list:hover .products a {
  display: block;
}
<div class="wrapper">
  <nav class="main-nav">
    <ul>
      <li><a href="#">HOME</a></li>
      <li><a href="#">ABOUT</a></li>
      <li class="products-list"><a href="#">PRODUCTS</a>
        <ul class="products">
          <li><a href="#">item1</a></li>
          <li><a href="#">item2</a></li>
          <li><a href="#">item3</a></li>
          <li><a href="#">item4</a></li>
        </ul>
      </li>
      <li><a href="#">SERVICES</a></li>
      <li><a href="#">CONTACT</a></li>
    </ul>
  </nav>
  <div>

关于html - 将鼠标悬停在下拉元素上时,导航栏元素会轻微移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49984474/

相关文章:

Javascript "selectElement.add(option, index)"在 Firefox 中工作,但在 Chrome 中工作

javascript - 剪刀石头布。图像不起作用

html - 无法将 Logo 图像的属性设置为响应

html - 如何使 Nav MenuBar 不横跨整个页面

javascript将类添加到特定div中的元素

javascript - onclick 导航栏元素更改为事件状态的代码

javascript - Accordion 下拉菜单不适用于手机/平板电脑

html - 我可以禁用为复选框标记 : in Spring MVC? 生成隐藏字段吗

JQuery UI Resizable + box-sizing : border-box = height bug?

css - 如何在我的文本右侧正常显示图像,但在移动设备上显示图像在我的文本下方?