【问题标题】:Sub-Sub-Menus do not appear子子菜单不出现
【发布时间】:2017-08-22 18:03:52
【问题描述】:

使用下面的代码,我创建了一个固定的<header>,由一个<image> 和一个<navigation> 组成。到目前为止,这一切都完美无缺。

现在我想将 sub-sub-menus 插入到 <navigation> 中,正如您在 HTML 下看到的那样:

1.3.1
1.3.2
1.3.3

2.2.1
2.2.2
2.2.3

我希望那些sub-sub-menus 出现在他们的button旁边。 但是,在我当前的代码中,它们根本没有出现。

我需要进行哪些更改才能使sub-sub-menus紧挨着出现在他们的button 旁边?

您也可以找到我的代码here

body {
  margin: 0;
}

.header {
  width: 80%;
  height: 10%;
  margin-left: 10%;
  display: flex;
  justify-content: space-between;
  position: fixed;
  top: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: yellow;
}

.image {
  width: 30%;
  height: 100%;
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: green;
}

.navigation {
  width: 70%;
  height: 100%;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
}

.navigation>ul {
  height: 100%;
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: blue;
}

.navigation>ul>li {
  width: 100%;
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
}

.content {
  width: 80%;
  margin-top: 10%;
  margin-left: 10%;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: red;
}

.button_01, .button_02 {
 position: relative;
}

.SlideItem_01, .SlideItem_02 {
  max-height:0px;
  overflow:hidden;
  transition: max-height .5s linear;
  width: 100%;
  position: absolute;
  top: 100%;
  left: 0;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: lime;
}

.button_01:hover .SlideItem_01 {
  max-height: 100px;
}

.button_02:hover .SlideItem_02 {
  max-height: 100px;
}

.SlideItem_01 li, .SlideItem_02 li  {
 display: block;
}

.SlideItem_02 {
 width: 100%;
 position: absolute;
 left: 100%;
 top: 0;
 padding:0;
 }
<div class="header">	

      <div class="image">
      Image
      </div>
  
      <nav class="navigation"> 
      
        <ul>
        
          <li class="button_01"> 1.0 Main Menu 
            <ul class="SlideItem_01">
              <li> 1.1 Sub Menu </li>
              <li> 1.2 Sub Menu </li>
              <li class="button_02"> 1.3 Sub Menu     
                 <ul class="SlideItem_02">
                  <li> 1.3.1 Sub Menu </li>
                  <li> 1.3.2 Sub Menu </li>
                  <li> 1.3.3 Sub Menu </li>
                 </ul>
              </li> 
            </ul>
          </li>
          
          <li class="button_01"> 2.0 Main Menu 
            <ul class="SlideItem_01">
              <li> 2.1 Sub Menu </li>
              <li class="button_02"> 2.2 Sub Menu     
                 <ul class="SlideItem_02">
                  <li> 2.2.1 Sub Menu </li>
                  <li> 2.2.2 Sub Menu </li>
                  <li> 2.2.3 Sub Menu </li>
                 </ul>
              </li> 
            </ul>
          </li>

          <li> 3.0 Main Menu </li>
          
        </ul>
        
      </nav>
      
</div>	

【问题讨论】:

    标签: html css


    【解决方案1】:

    由于ul 中的overflow:hidden; 而隐藏了第三级菜单,所以我将其删除并添加opacity

    body {
      margin: 0;
    }
    
    .header {
      width: 80%;
      height: 10%;
      margin-left: 10%;
      display: flex;
      justify-content: space-between;
      position: fixed;
      top: 0;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
      background-color: yellow;
    }
    
    .image {
      width: 30%;
      height: 100%;
      display: flex;
      justify-content: center;
      text-align: center;
      align-items: center;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
      background-color: green;
    }
    
    .navigation {
      width: 70%;
      height: 100%;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
    }
    
    .navigation>ul {
      height: 100%;
      display: flex;
      list-style: none;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
      background-color: blue;
    }
    
    .navigation>ul>li {
      width: 100%;
      display: flex;
      justify-content: center;
      text-align: center;
      align-items: center;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
    }
    
    .content {
      width: 80%;
      margin-top: 10%;
      margin-left: 10%;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
      background-color: red;
    }
    
    .button_01, .button_02 {
     position: relative;
    }
    
    .SlideItem_01, .SlideItem_02 {
      max-height:0;
      /*overflow:hidden;*/
      opacity: 0;
      transition: max-height .5s linear, opacity .5s linear;
      width: 100%;
      position: absolute;
      top: 100%;
      left: 0;
      padding: 0;
      margin: 0;
      box-sizing: border-box;
      border-style: solid;
      border-width: 1px;
      background-color: lime;
    }
    
    .button_01:hover .SlideItem_01 {
      max-height: 100px;
      opacity:1;
    }
    
    .button_02:hover .SlideItem_02 {
      max-height: 100px;
       opacity:1;
    }
    
    .SlideItem_01 li, .SlideItem_02 li  {
     display: block;
    }
    
    .SlideItem_02 {
     width: 100%;
     position: absolute;
     left: 100%;
     top: 0;
     padding:0;
     }
    <div class="header">
        <div class="image">
        Image
        </div>
        <nav class="navigation"> 
          <ul>
            <li class="button_01"> 1.0 Main Menu 
              <ul class="SlideItem_01">
                <li> 1.1 Sub Menu </li>
                <li> 1.2 Sub Menu </li>
                <li class="button_02"> 1.3 Sub Menu     
                   <ul class="SlideItem_02">
                    <li> 1.3.1 Sub Menu </li>
                    <li> 1.3.2 Sub Menu </li>
                    <li> 1.3.3 Sub Menu </li>
                   </ul>
                </li> 
              </ul>
            </li>
    
            <li class="button_01"> 2.0 Main Menu 
              <ul class="SlideItem_01">
                <li> 2.1 Sub Menu </li>
                <li class="button_02"> 2.2 Sub Menu     
                   <ul class="SlideItem_02">
                    <li> 2.2.1 Sub Menu </li>
                    <li> 2.2.2 Sub Menu </li>
                    <li> 2.2.3 Sub Menu </li>
                   </ul>
                </li> 
              </ul>
            </li>
            <li> 3.0 Main Menu </li>
          </ul>
        </nav>
    </div>

    【讨论】:

    • 嗨,Manish,感谢您的回答,但现在在动画中,文本首先淡入,然后背景(颜色石灰)有一个短暂的延迟。我怎样才能让它们一起淡入?
    • 该示例将过渡应用于最大高度和不透明度。我想如果你把 transition: all .5s linear 代替每个属性的转换,这将起作用。
    • 我在这里尝试过jsfiddle.net/vu0hnqab/50,但它似乎不起作用。
    • @Michi 所以过渡是我猜的问题?
    • 是的,我猜是因为 fadeIn 本身有效。只有背景(石灰)会延迟淡入。在此处查看 jsfiddle jsfiddle.net/vu0hnqab/50
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2012-07-22
    • 2013-02-22
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多