2016-02-03 80 views
0

我已經將水平導航轉換爲垂直響應導航,但是當您通過klicking打開響應導航頂層(ul li)時在'菜單'上,ul li的高度太高(參見頂層下面的灰色區域),並且下一層的最後菜單點消失 (菜單1應該有7個子級菜單點,菜單2應該有5和菜單3應該有3)。水平導航到垂直響應導航,響應導航頂端水平太高,上一個水平導航消失

我想通了這是具有與桌面版本以下CSS做的,但不知道如何擺脫這個問題:

  ul.topNav li ul { 
      display: none; 
      **position: absolute; 
      top: 2.3rem;** 
      background-color: rgb(245, 245, 245); 
     } 

嘗試了很多,但沒有解決。在下面你可以找到所有的代碼和鏈接,讓它運行並查看結果。不要忘了調整窗口大小在320到979像素之間,並可能重新加載以確保它可以正常工作。

function init() { 
 

 
       var ww = document.body.clientWidth; 
 
       var mobileLayout = ww <= 1024; 
 

 
       if (mobileLayout) { 
 
        /* show topNav */ 
 
        $("#menuIcon").click(function() { 
 
         $("#topNavResp").fadeToggle(100); 
 
         }); 
 
         /* show topNav second level and close all others */ 
 
         $('.topNavLi').on('click', function (event) { 
 
          event.preventDefault(); 
 
          $(this).next('ul').slideToggle(); 
 

 
          $(this).parent().siblings().children().next().slideUp(); 
 
          return false; 
 
         }); 
 

 
        } else { 
 
         alert('please reduce/shrink your window and reload'); 
 
        } 
 
       }
  html { 
 
       font-size: 15px; 
 
       background-color: rgba(227, 227, 227, 1); 
 
      } 
 
      ol, ul, li { 
 
       list-style-type: none; 
 
      } 
 
      a { 
 
       text-decoration: none; 
 
      } 
 

 
      /* ------------------- TOP NAV BAR ------------------------------------------ */ 
 

 
      #headerNavBar { 
 
       width: 100%; 
 
       height: 2.4rem; 
 
       line-height: 2.4rem; 
 
       display: block; 
 
       background-color: #D3D3D3; 
 
       *zoom: 1; 
 
      } 
 

 
      ul.topNav { 
 
       float: right; 
 
       width: 75%; 
 
       height: 2.3rem; 
 
       position: relative; 
 
       z-index: 10; 
 
      } 
 
      ul.topNav > li { 
 
       line-height: 2.3rem; 
 
       float: left; 
 
       width: auto; 
 
       position: relative; 
 
      } 
 

 
      ul.topNav li a.topNavLi { 
 
       height: 2.3rem; 
 
       float: left; 
 
       padding: 0 10.3%; 
 
      } 
 
      ul.topNav li a:hover.topNavLi, 
 
      ul.topNav li:active a.topNavLi, 
 
      ul.topNav li:hover a.topNavLi { 
 
        border-bottom: 0.13rem solid #e23427; 
 
        color: #e23427; 
 
      } 
 

 
      /* ------------------- TOP NAV 2nd LEVEL------------------------------------- */ 
 

 
      ul.topNav li ul { 
 
       display: none; 
 
       position: absolute; 
 
       top: 2.3rem; 
 
       background-color: rgb(245, 245, 245); 
 
      } 
 
      ul.topNav li ul li { 
 
       float: none; 
 
       display: block; 
 
      } 
 
      ul.topNav li ul li a { 
 
       display: block; 
 
       color: #231f20; 
 
      } 
 
      ul.topNav li ul li:hover, 
 
      ul.topNav li ul li:active { 
 
        background-color: rgb(227, 33, 33); 
 
      } 
 
      ul.topNav li ul li:hover a, 
 
      ul.topNav li ul li:active a { 
 
        color: #fff; 
 
      } 
 
      /**************************************************************************** */ 
 
      /**************************************************************************** */ 
 
      @media only screen and (min-width: 320px) and (max-width: 979px) 
 
      { 
 
       body { 
 
        width: 95%; 
 
        margin: 0 auto; 
 
       } 
 
       #wrapper { 
 
        width: 100%; 
 
       }  
 
       #pageHead { 
 
        width: 100%; 
 
       } 
 

 
       /* ------------------- NAVI Responsive --------------------------------- */ 
 
       #headerNavBar { 
 
        height: 2.9rem; 
 
        line-height: 2.9rem; 
 
        position: relative; 
 
       } 
 

 
       #menuIcon { 
 
        display: block; 
 
        position: absolute; 
 
        top: 0; 
 
        right: 0; 
 
        padding: 0.3rem 1rem 0 0; 
 
       }   
 
       ul.topNav { 
 
        display: none; 
 
        float: none; 
 
        width: 100%; 
 
        position: absolute; 
 
        top: 2.9rem; 
 
       } 
 
       .topNav > li { 
 
        width: 100% !important; 
 
        background-color: #D3D3D3; 
 
        display: block; 
 
        position: static; 
 
        border-bottom: 1px solid #FFF; 
 
       } 
 
       ul#topNavResp.topNav li a.topNavLi, 
 
       ul#topNavResp.topNav li ul li a { 
 
        width: 100%; 
 
       } 
 
       ul.topNav li a:hover.topNavLi, 
 
       ul.topNav li:active a.topNavLi, 
 
       ul.topNav li:hover a.topNavLi { 
 
       border: none; 
 
       } 
 
      /* ------------------- TOP NAV Responsive 2nd LEVEL ------------------------- */ 
 
       ul.topNav li ul { 
 
        display: none; 
 
        width: 100%; 
 
        position: static; 
 
        padding-left: 10.3%; 
 
        background-color: rgb(245, 245, 245); 
 
       } 
 
       ul.topNav li ul li { 
 
        width: 100%; 
 
       } 
 
      }
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <title></title> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    </head> 
 
    <body onload="init();"> 
 
     <div id="wrapper"> 
 
      <div id="pageHead"> 
 

 
       <nav id="headerNavBar">     
 

 
        <a href="#" id="menuIcon">MENU</a> 
 
        
 

 
        <ul class="topNav" id="topNavResp"> 
 
         <li> 
 
          <a href="#" class="topNavLi">Menu 1</a> 
 
          <ul> 
 
           <li><a href="#">11111</a></li> 
 
           <li><a href="#">22222</a></li> 
 
           <li><a href="#">33333</a></li> 
 
           <li><a href="#">44444</a></li> 
 
           <li><a href="#">55555</a></li> 
 
           <li><a href="#">66666</a></li> 
 
           <li><a href="#">77777</a></li> 
 
          </ul> 
 
         </li> 
 
         <li> 
 
          <a href="#" class="topNavLi">Menu 2</a> 
 
          <ul> 
 
           <li><a href="#">11111</a></li> 
 
           <li><a href="#">22222</a></li> 
 
           <li><a href="#">33333</a></li> 
 
           <li><a href="#">44444</a></li> 
 
           <li><a href="#">55555</a></li> 
 
          </ul> 
 
         </li> 
 
         <li> 
 
          <a href="#" class="topNavLi">Menu 3</a> 
 
          <ul> 
 
           <li><a href="#">11111</a></li> 
 
           <li><a href="#">22222</a></li> 
 
           <li><a href="#">33333</a></li> 
 
          </ul> 
 
         </li> 
 

 
        </ul> 
 

 
       </nav><!-- end topNav --> 
 
      </div> 
 
    
 
     </div><!-- end wrapper --> 
 

 
    </body> 
 
</html>

回答

0

更改規則:

@media only screen and (max-width: 979px) and (min-width: 320px){ ul.topNav li ul { ... position: inherit; } }

要:

@media only screen and (max-width: 979px) and (min-width: 320px){ ul.topNav li ul { ... position: static; } }

+0

道格拉斯嗨! :-)謝謝你的提示!它解決了這個問題。我添加了一些更多的顏色(如原來的),以顯示我們現在存在的問題:現在第一層看起來幾乎是正確的 - 當「活動」時它仍然「丟失」背景顏色 - 但是第一層層條目太高,覆蓋/覆蓋第一級導航條目。 –

+0

解決了一件事:現在第一個高級菜單條目太高,覆蓋/覆蓋了第一級導航條目。我添加了以下內容:ul.topNav li ul li {* new */height:auto; /* new */overflow:hidden; }但是我怎樣才能保持一級菜單條目的背景顏色? –

+0

嗨,第一個問題可以通過float:none來解決。 ul#topNavResp.topNav li a.topNavLi,ul#topNavResp.topNav li ul li a {'float:none'}。但是,爲了保持背景沒有:懸停,這將是必要的使用像輸入收音機或複選框,(沒有JS)。參見:http://codepen.io/CesarGabriel/pen/tLDwH –