Попытка добавить подменю CSS

Я хочу, чтобы вы знали, прежде чем я начну, что я просматривал все вопросы о подменю и не видел ничего, что могло бы помочь коду, который я уже изложил. Я ценю любую помощь, которую кто-либо может мне дать.

Итак, я пытаюсь добавить подменю, и я думал, что понял это, но я не думаю, что совсем понимаю, как заставить дочерние комбинаторы работать. Если бы вы могли взглянуть конкретно на эту часть кода, вы были бы в моем «списке святых».

ETA: О да, и проблема в том, что подменю не выходит вправо и не отображается рядом с родителем, от которого он должен быть подчиненным, что я и хочу, чтобы он делал. Я надеюсь, что в этом есть смысл.

Вот предварительный просмотр скрипки - http://jsfiddle.net/BVtSC/18/

А вот и CSS:

/*------------------------- Header ---------------------------*/
 #header {
 background: #333 url(../images/bg-header2.png) repeat-x;
 height:184px;
 margin:15px 0 0;
}
#header div {
margin:0 auto;
padding:28px 0 0;
position:relative;
width:500px;
}
#header div ul {
height:118px;
left:10px;
list-style:none;
margin:0;
overflow:visible;
padding:0;
position:absolute;
top:10px;
float: left;
width: 500px;
}
#header div ul li:first-child {
margin:0;
}
#header div ul li {
float:left;
height:66px;
margin:0 0 0 65px;
text-align:left;
position:relative;
}
#header div ul li a {
color:#fff;
font-family:oswaldregular;
font-size:16px;
line-height:24px;
text-decoration:none;
text-transform:uppercase;
}
#header div ul li.selected a, #header div ul li a:hover {
color:#DD2D00;
}
#header div ul li ul {
height:1000px;
left:-99999px;
overflow:visible;
position:absolute;
top:37px;
width:115px;
float: left;
}
#header div ul li:hover ul {
left:0;
top:37px;
}
#header div ul li ul li {
background:none #343434;
border:1px solid #4f4f4f;
float:none;
height:29px;
margin:-1px 0 0;
padding:0 12px;
position:relative;
width:auto;
z-index:1000;
}
#header div ul li ul li:hover {
background:none #DD2D00;
}
#header div ul li ul li:hover {
left:0;
top:0;
}
#header div ul li ul li a {
color:#ffffff!important;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
line-height:28px;
text-transform:none;
}
#header div ul li ul li.selected a, #header div ul li ul li a:hover {
color:#fff!important;
}
#header div ul li ul li ul {
height:1000px;
right:-99999px;
overflow:visible;
position:absolute;
top:37px;
width:115px;
float: right;
}
#header div ul li ul li:hover ul {
left:0;
top:37px;
}
#header div ul li ul li ul li {
background:none #343434;
border:1px solid #4f4f4f;
float:none;
height:29px;
margin:-1px 0 0;
padding:0 12px;
position:relative;
width:auto;
z-index:1000;
}
#header div ul li ul li ul li:hover {
background:none #DD2D00;
}
#header div ul li ul li ul li:hover {
left:0;
top:0;
}
#header div ul li ul li ul li a {
color:#ffffff!important;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
line-height:28px;
text-transform:none;
}
#header div ul li ul li ul li.selected a, #header div ul li ul li ul li a:hover {
color:#fff!important;
} 

Вот HTML:

<div id="header">
<div>   

    <ul>
        <li>    <a href="index.html">Home</a>

        </li>
        <li>    <a href="about.html">About</a>

        </li>

        <li class="selected">   <a href="portfolio.html">Portfolio</a>

            <ul>
                <li>    <a href="fantasy.html">Fantasy</a>

                </li>
                <li>    <a href="makeup.html">Makeup</a>

                    <ul>
                        <li><a href="glamour.html">Glamour Makeup</a>
                        </li>
                        <li><a href="sfxmakeup.html">Special Effects Makeup</a>
                        </li>
                    </ul>
                </li>
                <li>    <a href="boudoir.html">Boudoir</a>

                </li>
                <li>    <a href="babykids.html">Baby & Kids</a>

                    <ul>
                        <li><a href="baby.html">Baby</li>
                        <li><a href="baby.html">Kids</li>  </ul>
                    </li>
                    <li>
                        <a href="family.html">Family</a>

                            <ul>
                                <li><a href="couples.html">Couples</li>
                        <li><a href="mombaby.html">Mother/Baby</li>
                        <li><a href="momchild.html">Mother/Child</li>
                        <li><a href="fatherchild.html">Father/Child</li>
                        </ul>
                    </li>
                    <li>
                        <a href="pets.html">Pets</a>

                                </li>
                                <li>    <a href="portrait.html">Portrait</a>

                                </li>
                                    </ul>
                        </li>

                        <li>    <a href="contact.html">Contact</a>

                        </li>
                    </ul>
</div>
</div> 

Опять же, любая помощь вообще будет творить чудеса. Спасибо за внимание. :)


person AceofHearts    schedule 10.04.2013    source источник


Ответы (2)


или вы можете использовать это, которое является простым примером вложенного меню (без ограничений). jsfiddle
вам нужно просто настроить его размер и цвет.

HTML

<ul class="menu">
    <li><a href="#">item1</a></li>
    <li><a href="#">item2</a>
        <ul>
            <li><a href="#">sub item1</a></li>
            <li><a href="#">sub item2</a></li>
            <li><a href="#">sub item3</a>
                <ul>
                    <li><a href="#">sub sub item 1</a></li>
                    <li><a href="#">sub sub item 2</a>
                        <ul>
                            <li><a href="">sub sub sub item1</a></li>
                            <li><a href="">sub sub sub item2</a></li>
                            <li><a href="">sub sub sub item3</a>
                                <ul>
                                    <li><a href="">yes why not?</a></li>
                                    <li><a href="">you can still continue</a></li>
                                    <li><a href="">if you want</a></li>
                                    <li><a href="">you can try.(-;</a></li>
                                </ul>
                            </li>
                            <li><a href="">sub sub sub item4</a></li>
                        </ul>
                    </li>
                    <li><a href="#">sub sub item 3</a></li>
                </ul>
            </li>
            <li><a href="#">sub item4</a></li>
        </ul>
    </li>
    <li><a href="#">item3</a></li>
</ul>

CSS

ul.menu{
    position:relative;
}


ul.menu li{
    padding:0;
    margin:0;
    position:relative;
    border:1px solid;
}

ul.menu > li{
    float:left;
    padding:10px 45px;
}

ul.menu > li li{
    padding:7px;
}

ul.menu , ul.menu ul{
    list-style:none;
    padding:5px;
    margin:0;
    overflow:visible;
}

ul.menu li:hover > ul{
    display:block;
}

ul.menu ul{
    display:none;
    position:absolute;
    left:-6px;
    top:37px;
    width:160px;
}

ul.menu ul:hover{
    display:block;
}

ul.menu ul ul{
    left:158px;
    top:0;
}
person ncm    schedule 11.04.2013
comment
Ура!!!! Я крепко обнимаю тебя виртуально. Вы помогли мне разобраться в проблеме. Не могу передать, насколько я ценю вашу помощь. Я дал вам репутацию во всем и принял ваш ответ. Вы также были объявлены святыми в церкви AceofHearts! - person AceofHearts; 12.04.2013

Вам могут помочь три вещи.
Во-первых, используйте '>' в селекторах css.
Во-вторых, используйте это

ul ul{
    display:none;
}
ul > li:hover > ul {
    display:block;
}

это приводит к отображению блока ul при наведении курсора на его родителя '‹ li >'.
и третий использует позиции css для настройки положения подменю. как это

#header > ul{
    position:relative;
}
li{
    position:relative;
}
ul ul{
    position:absolute;
    left:120px;
    top:0;
}
person ncm    schedule 10.04.2013
comment
Большое спасибо за ваш ответ. Дисплей: нет и дисплей: блок работали отлично, но я не могу понять, как заставить его выходить вправо. Что бы я ни делал, он остается за родительским подменю. Вот еще раз ссылка jsfiddle.net/BVtSC/47. Если у вас есть желание посмотреть и увидеть, что я делаю неправильно, я действительно буду перед вами в долгу. Я просто действительно застрял. Я попробовал ваше решение внизу с позициями, но оно полностью испортило форматирование. Еще раз спасибо за вашу помощь до сих пор и вашу возможную дальнейшую помощь. :) - person AceofHearts; 11.04.2013
comment
добро пожаловать. здесь все поддерживают друг друга, один отвечает, а другой голосует за ответы и полезные комментарии. (: Я искал в своих кодах, чтобы найти аналогичный код для публикации здесь, но я ничего не нашел. попытайтесь найти или написать его, но я думаю, что это будет поздно для вас.поэтому совет.попробуйте написать свой код с самого начала и попробуйте использовать li › ul вместо li ul.и просто используйте li ul (для часто общих вещей) .а также попытайтесь понять, что делает каждая часть вашего кода и для чего. (-: - person ncm; 11.04.2013
comment
Большое спасибо имсисо. Я согласен с тем, что вы сказали внизу о понимании каждой части кода, и я определенно пытался это сделать. Переполнение стека творит чудеса с моим обучением программированию. Если вы сможете найти или написать код, который поможет решить мою проблему, и это не составит особых проблем, для меня никогда не поздно. Всегда. :) Спасибо за то, как много вы помогаете людям. Сегодня я наконец набрал достаточно репутации, чтобы голосовать за ответы, и я определенно проголосовал за ваши. :) - person AceofHearts; 11.04.2013