2015-03-07 2 views
0

Я пытаюсь реализовать строку меню с подменю с использованием CSS.Меню с подменю css

Demo http://jsfiddle.net/kgu/skg3ctu5/

HTML

<div class="menu"> 
    <ul id="navmenu"> 
     <li><a href="#"> Item1 </a></li> 
     <li><a href="#"> Item2 </a></li> 
     <li> 
      <a href="#"> Item3 </a> 
      <ul class="sub1"> 
       <li><a href="#"> Item3.1 </a></li> 
       <li> 
        <a href="#"> Item3.2 </a> 
        <ul class="sub2"> 
         <li><a href="#"> Item3.2.1 </a></li> 
         <li><a href="#"> Item3.2.2 </a></li> 
         <li><a href="#"> Item3.2.3 </a></li> 
        </ul> 
       </li> 
       <li><a href="#"> Item3.3 </a></li> 
      </ul> 
     </li> 
     <li><a href="#"> Item4 </a></li> 
    </ul> 
</div> 

CSS

* { 
    margin:0px; 
    padding:0px; 
} 
body { 
    padding:50px; 
    font-family:verdana; 
    background-color:#000000; 
} 
#navmenu li { 
    list-style-type:none; 
} 
#navmenu li { 
    outline:1px solid red; 
    width:125px; 
    text-align:center; 
    position:relative; 
    float:left; 
} 
.sub1 { 
    position:absolute; 
    top:27px; 
    left:0px; 
} 
.sub2 { 
    position:absolute; 
    left:126px; 
    top:0px; 
} 
#navmenu a { 
    display:block; 
    height:25px; 
    background-color:#ffffff; 
    text-decoration:none; 
} 

Я хочу, чтобы мой (подменю 1) .sub1 появиться горизонтально под меню нав. При наведении курсора на элемент 3 подменю 3.1 следует отображать под пунктом 1, пункт 3.2 должен появиться под пунктом 2, а пункт 3.3 должен появиться под пунктом 3.

Может ли кто-нибудь помочь? благодаря!

ответ

0

Вот полное решение для CSS. Измените часть своего css на это:

*{ 
     margin:0px; 
     padding:0px; 
    } 

    body{ 

     padding:50px; 
     font-family:verdana; 
     background-color:#000000; 
    } 




    #navmenu li{ 
     list-style-type:none; 
    } 

    #navmenu li{ 
     outline:1px solid red; 
     width:125px; 
     text-align:center; 
     position:relative; 
     float:left; 

    } 
    .sub1{ 
     position:absolute; 
     top:27px; 
     left:0px; 
     display:none; 

    } 
    .sub1:hover, .sub1:focus { 
     display:block; 
    } 

    .sub2:hover, .sub2:focus { 
     display:block; 
    } 


    .sub2{ 
     position:absolute; 
     left:126px; 
     top:0px; 
     display:none; 
    } 

    #navmenu a{ 

     display:block; 
     height:25px; 
     background-color:#ffffff; 
     text-decoration:none; 

    } 

    #navmenu a:hover + .sub1{ 
     display:block; 
    } 

    #navmenu a:hover + .sub2{ 
     display:block; 
    } 

Я дал вам список подменю: нет. Затем, если вы наведете или сфокусируете их, они будут отображаться, эта работа с нижними 2 новыми стилями выбора, которые я сделал, которые проверяют, что тег рядом с .sub1 или sub2 на отображении наведения блокирует их. Все эти компоненты вместе позволяют снизить производительность. Если вы хотите, вы можете анимировать анимацию css при наведении и фокусировке. Обратите внимание, что новый селектор, который я использовал «+», позволяет вам выбирать братьев и сестер (элементы рядом друг с другом).

Добавление больше вы также можете попробовать использовать это вместо CSS выше просто добавьте его в нижней части CSS

ul#navmenu li:hover > ul { 
    display:block; 
} 
+0

Может быть, это хорошая идея, если вы могли бы разместить весь код CSS выше. Также кажется, что выпадающее меню исчезает слишком рано (невозможно выбрать). – Stickers

+0

Я отправил остальную часть css. Падение вниз немного багги. Но я также предлагаю другое решение. – floor

+0

@floor Это не работает. Я пытаюсь создать панель меню, в которой элементы sub1 (подменю 1) расположены горизонтально под элементами главного меню. – user3788040

Смежные вопросы