【问题标题】:Show nested dropdown with overflow hidden set to parent dropdown显示嵌套下拉菜单,溢出隐藏设置为父下拉菜单
【发布时间】:2021-03-08 04:55:16
【问题描述】:

我有一个嵌套在父下拉菜单中的下拉菜单。父下拉菜单设置为溢出:隐藏,我使用 max-height 为高度过渡设置动画。所以它必须溢出:隐藏才能使该动画正常工作。问题是现在我有一个嵌套在该父下拉列表中的子下拉列表。因为父下拉列表是溢出:隐藏,所以子下拉列表被父下拉列表隐藏。 我的问题是:有没有办法为父下拉列表的高度设置动画并显示子下拉列表?我不想为不透明度设置动画。我认为要使最大高度动画化,我们必须将下拉菜单设置为溢出:隐藏,但这会隐藏所有子下拉菜单。也许还有其他方法?

<div class="nav">
    <div class="nav-item">
        Nav Item
        <ul class="dropdown">   
          <li>  <a href="">LINK</a></li>
          <li>  
            <a href="">LINK</a>
            <ul class="inner-dropdown">
              <li><a href="">link</a></li>
              <li><a href="">link</a></li>
            </ul>  
            </li>
          <li>  <a href="">LINK</a></li>
        <ul/>
    </div>
</div>
body {
  margin: 0;
  padding: 0;
}

ul {
  list-style: none;
}

.nav-item{
   width:100%
   height:20px;
   background:#56bcf9;
  text-align:center;
  font-family: 'Arial';
  font-weight: 700;
  padding: 30px 0;
  cursor: pointer;
}
.nav-item:hover .dropdown{
  max-height: 500px;
}
.dropdown{
    width:500px;
    background:#666;
    position:absolute;
    max-height: 0; 
    transition: max-height .5s ease-in; 
  overflow: hidden;
    
}

.dropdown li {
  padding: 15px;
}

.inner-dropdown {
  position: absolute;
  background: pink;
  width: 200px;
  top: 60px;
  left: 540px;
}

body {
  margin: 0;
  padding: 0;
}

ul {
  list-style: none;
}

.nav-item{
   width:100%
   height:20px;
   background:#56bcf9;
  text-align:center;
  font-family: 'Arial';
  font-weight: 700;
  padding: 30px 0;
  cursor: pointer;
}
.nav-item:hover .dropdown{
  max-height: 500px;
}
.dropdown{
    width:500px;
    background:#666;
    position:absolute;
    max-height: 0; 
    transition: max-height .5s ease-in; 
  overflow: hidden;
    
}

.dropdown li {
  padding: 15px;
}

.inner-dropdown {
  position: absolute;
  background: pink;
  width: 200px;
  top: 60px;
  left: 540px;
}
<div class="nav">
    <div class="nav-item">
        Nav Item
        <ul class="dropdown">   
          <li>  <a href="">LINK</a></li>
          <li>  
            <a href="">LINK</a>
            <ul class="inner-dropdown">
              <li><a href="">link</a></li>
              <li><a href="">link</a></li>
            </ul>  
            </li>
          <li>  <a href="">LINK</a></li>
        <ul/>
    </div>
</div>

【问题讨论】:

    标签: html css drop-down-menu overflow


    【解决方案1】:

    通过设置overflow: visible;dropdown类中,通过在inner-dropdown菜单下给出动画来设置菜单。

    body {
      margin: 0;
      padding: 0;
    }
    
    ul {
      list-style: none;
    }
    
    .nav-item{
      max-width:500px;
      background:#56bcf9;
      text-align:center;
      font-family: 'Arial';
      font-weight: 700;
      cursor: pointer;
      padding:30px 0;
    }
    .nav-item:hover .dropdown{
      visibility:visible;
      max-height: 1000px;
    }
    
    
    .dropdown{
        width:500px;
        background:#666;
        position:absolute;
        max-height: 0px; 
        transition: all .5s ease-in; 
        overflow: visible;
        top:60px;
        padding:0;
        visibility:hidden;
    }
    
    .dropdown li {
      padding: 15px 0;
      color:white;
    }
    .dropdown li:hover .inner-dropdown{
     max-height:500px;
    }
    .dropdown li:hover .inner-dropdown li{
      opacity: 1; 
    }
    .inner-dropdown {
      position: absolute;
      background: red;
      width: 200px;
      top: 80px;
      left: 500px;
      max-height:0;
       padding:0;
      transition: all .5s ease-in-out; 
    }
    .inner-dropdown li {
       opacity: 0; 
       transition: all .5s ease-in-out; 
    }
    <div class="nav">
      <div class="nav-item">
        Nav Item
        <ul class="dropdown">
          <li> <a href="">LINK</a></li>
          <li>
            <a href="">LINK</a>
            <ul class="inner-dropdown">
              <li><a href="">link</a></li>
              <li><a href="">link</a></li>
            </ul>
          </li>
          <li> <a href="">LINK</a></li>
          <ul/>
      </div>
    </div>

    【讨论】:

    • 这确实显示了子下拉菜单,但父下拉菜单现在可见,我还需要在不悬停时隐藏父下拉菜单。
    • 我很抱歉。我没有意识到它必须被隐藏。我刚刚修改了代码。现在可以了。
    • 没问题!谢谢你的尝试。我想它几乎就在那里!唯一的事情是父下拉菜单的链接文本将在下拉菜单扩展到全高之前显示,这看起来有点奇怪。我唯一的想法是将溢出隐藏到父下拉列表中,以便链接和下拉列表同时动画。但这会导致父级隐藏的内部下拉菜单。我认为这是我的问题的关键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2010-12-07
    • 2012-08-03
    • 1970-01-01
    • 2017-03-06
    • 2021-07-01
    • 2013-07-02
    相关资源
    最近更新 更多