【问题标题】:Responsive dropdown响应式下拉
【发布时间】:2023-01-09 15:46:03
【问题描述】:

我使用 CSS 创建了一个下拉列表。当悬停导航栏的元素时,会弹出下拉菜单。代码中没有错误。但是,我需要有关导航栏样式的帮助。我希望子菜单中的所有元素都在同一行,即,我希望下拉菜单的元素处于同一位置,同时根据悬停在导航栏中的元素更改信息。参考可以在 lululemon 网站上下拉。

nav {
  display: inline-flex;
  width: 100%;
}

.nav-list {
  display: flex;
  width: 100%;
  margin-top: .7rem;
  padding-left: 1.1rem;
}

.nav-list li {
  position: relative;
}

.nav-list>li>a {
  color: black;
  display: block;
  font-size: 1rem;
  padding: 1.3rem 1rem;
  text-transform: uppercase;
  transition: color 300ms;
}

.sub-menu a {
  position: relative;
  top: 2rem;
  color: #ffffff;
  font-size: 1.1rem;
  font-weight: 200;
  padding: 0 40px 0 40px;
}

.sub-menu {
  display: flex;
  position: absolute;
  box-sizing: border-box;
  background-color: black;
  visibility: hidden;
  box-sizing: border-box;
  width: 50rem;
  height: 15rem;
}

.nav-list li:hover>.sub-menu {
  top: 3.85em;
  visibility: visible;
  opacity: 1;
}
<nav>
  <ul class="nav-list">
    <li>
      <a href="">Men</a>
      <ul class="sub-menu">
        <li>
          <a href="#">Mens shirts</a>
        </li>
        <li>
          <a href="#">Mens Shorts</a>
        </li>
        <li>
          <a href="#">Mens Accessories</a>
        </li>
      </ul>
    </li>
    <li>
      <a href="%">Women</a>
      <ul class="sub-menu">
        <li>
          <a href="#">Womens shirts</a>
        </li>
        <li>
          <a href="#">Womens Shorts</a>
        </li>
        <li>
          <a href="#">Womens Accessories </a>
        </li>

      </ul>
</nav>

【问题讨论】:

    标签: html css


    【解决方案1】:

    nav {
      display: inline-flex;
      width: 100%;
    }
    
    .nav-list {
      display: flex;
      width: 100%;
      margin-top: .7rem;
      padding-left: 1.1rem;
      position: relative;
    }
    
    .nav-list li {
      position: relative;
    }
    
    .nav-list>li>a {
      color: black;
      display: block;
      font-size: 1rem;
      padding: 1.3rem 1rem;
      text-transform: uppercase;
      transition: color 300ms;
    }
    
    .sub-menu a {
      color: #ffffff;
      font-size: 1.1rem;
      font-weight: 200;
      padding: 0 40px 0 40px;
    }
    
    .sub-menu {
      display: flex;
      position: fixed;
      box-sizing: border-box;
      background-color: black;
      visibility: hidden;
      width: 50rem;
      height: 15rem;
      left: 20px;
      top: 0;
    }
    
    .nav-list li:hover>.sub-menu {
      top: 3.85em;
      visibility: visible;
      opacity: 1;
    }
    <nav>
      <ul class="nav-list">
        <li>
          <a href="">Men</a>
          <ul class="sub-menu">
            <li>
              <a href="#">Mens shirts</a>
            </li>
            <li>
              <a href="#">Mens Shorts</a>
            </li>
            <li>
              <a href="#">Mens Accessories</a>
            </li>
          </ul>
        </li>
        <li>
          <a href="%">Women</a>
          <ul class="sub-menu">
            <li>
              <a href="#">Womens shirts</a>
            </li>
            <li>
              <a href="#">Womens Shorts</a>
            </li>
            <li>
              <a href="#">Womens Accessories </a>
            </li>
    
          </ul>
    </nav>

    我对您的代码做了一些更改...基本上 position: fixed 完成了这项工作。您可以根据需要设置left值。

    【讨论】:

      【解决方案2】:

      这是你需要的吗? 问题是 position:relative 放错了地方,它必须应用于 .nav-list,因为它是 .sub-menu 的父级,您需要根据它对齐。

      nav {
        display: inline-flex;
        width: 100%;
      }
      
      .nav-list {
        display: flex;
        position:relative;
        width: 100%;
        margin-top: .7rem;
        padding-left: 1.1rem;
      }
      
      .nav-list>li>a {
        color: black;
        display: block;
        font-size: 1rem;
        padding: 1.3rem 1rem;
        text-transform: uppercase;
        transition: color 300ms;
      }
      
      .sub-menu a {
        position: relative;
        color: #ffffff;
        font-size: 1.1rem;
        font-weight: 200;
        padding: 0 40px 0 40px;
      }
      
      .sub-menu {
        display: flex;
        align-items:center;
        position: absolute;
        left:0px;
        box-sizing: border-box;
        background-color: black;
        visibility: hidden;
        box-sizing: border-box;
        width: 50rem;
        height: fit-content;
      }
      
      .nav-list li:hover >.sub-menu {
        top: 3.85em;
        visibility: visible;
        opacity: 1;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多