2016-12-08 3 views
1

私はコンテナの幅を100%とする3レベルのul liメニューを作成しようとしていますが、子レベルは親レベルの下にあります。メニュー3レベルのみ水平HTML/CSS/JavaScript + pushcontent

This is a screen what i'm trying to achieve.

#fakeheader, 
 
#fakecontent{ 
 
    width:100% 
 
    height:50px; 
 
    background:red; 
 
    position:relative 
 
    } 
 
#nav {position: relative;} 
 
#nav li { 
 
    list-style:none; 
 
    float: left; 
 
} 
 
#nav li a { 
 
    display: block; 
 
    padding: 8px 12px; 
 
    text-decoration: none; 
 
} 
 
#nav li a:hover { 
 
\t background-color:red; 
 
\t color:#FFF; 
 
\t opacity:1; 
 
} 
 

 
/* Targeting the first level menu */ 
 
#nav { 
 
    
 
    min-width:850px; 
 
    background:#fff; 
 
    opacity:0.5; 
 
    display: block; 
 
    height: 34px; 
 
    z-index: 100; 
 
    position: relative; 
 
} 
 
#nav > li > a { 
 
} 
 

 
/* Targeting the second level menu */ 
 
#nav li ul { 
 
    color: #333; 
 
    display: none; 
 
    position: absolute; 
 
    width:850px; 
 
} 
 
#nav li ul li { 
 
    display: inline; 
 
} 
 
#nav li ul li a { 
 
    background: #fff; 
 
    border: none; 
 
    line-height: 34px; 
 
    margin: 0; 
 
    padding: 0 8px 0 10px; 
 
} 
 
#nav li ul li a:hover { 
 
    background-color:red; 
 
    color:#FFF; 
 
    opacity:1; 
 
} 
 

 
/* Third level menu */ 
 
#nav li ul li ul{ 
 
    top: 0; 
 
} 
 
ul.child { 
 
background-color:#FFF; 
 
} 
 
/* A class of current will be added via jQuery */ 
 
#nav li.current > a { 
 
    background: #f7f7f7; 
 
    float:left; 
 
} 
 
/* CSS fallback */ 
 
#nav li:hover > ul.child { 
 
    left:0; 
 
    top:34px; 
 
    display:inline; 
 
    position:absolute; 
 
    text-align:left; 
 
} 
 
#nav li:hover > ul.grandchild { 
 
    display:block; 
 
}
<div id="fakeheader">Test 
 
</div> 
 

 
<ul id="nav"> 
 
    <li> 
 
     <a href="#">Products</a> 
 
     <ul class="child"> 
 
      <li><a href="#">Speakers</a> 
 
       <ul class="child"> 
 
        <li><a href="#">10 watt</a></li> 
 
        <li><a href="#">20 watt</a></li> 
 
        <li><a href="#">30 watt</a></li> 
 
       </ul> 
 
      </li> 
 
      <li><a href="#">Speakers</a> 
 
       <ul class="child"> 
 
        <li><a href="#">10 watt</a></li> 
 
        <li><a href="#">20 watt</a></li> 
 
        <li><a href="#">30 watt</a></li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    <li> 
 
     <a href="#">Products</a> 
 
     <ul class="child"> 
 
      <li><a href="#">Speakers</a> 
 
       <ul class="child"> 
 
        <li><a href="#">10 watt</a></li> 
 
        <li><a href="#">20 watt</a></li> 
 
        <li><a href="#">30 watt</a></li> 
 
       </ul> 
 
      </li> 
 
      <li><a href="#">Speakers</a> 
 
       <ul class="child"> 
 
        <li><a href="#">10 watt</a></li> 
 
        <li><a href="#">20 watt</a></li> 
 
        <li><a href="#">30 watt</a></li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
    
 
</ul> 
 

 
<div id="fakecontent"> 
 
test 
 
</div>

また、それはメニューの下になるコンテンツをプッシュすることが可能ですか?任意の助けと私の悪い英語のため申し訳ありません事前に

ありがとう:P

よろしく

答えて

0

はいくつかのスタイルを追加します。

#main-menu ul { 
    display: block; 
    list-style: none; 
    position: relative; 
} 
#main-menu > ul li ul { 
    position: absolute; 
    bottom: -100%; 
    left: 0; 
    width: 100%; 
    display: none; 
} 
#main-menu > ul li:hover > ul { 
    display: block; 
    color: red; 
} 
+0

私は私が作るために管理jsfiddleで私のコードを更新しました3レベルの作業ですが、今度は、第2レベルまたは第3レベルが表示されているときにコンテンツのプッシュをブロックします。 https://jsfiddle.net/v8xLmbrt/2/アイデアはありますか? –

+0

https://jsfiddle.net/v8xLmbrt/3/ –

+0

2番目と3番目のレベルが絶対配置されているため、コンテナのサイズが変更されずコンテンツがプッシュされないため、これを達成するにはjQueryコードが必要です – Joint

関連する問題