CSS меню с 3 вложенными списками - выровнять левые задачи

0

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

JSFIDDLE ЗДЕСЬ

HTML:

<ul class="nav">
<li><a href="#">LINK1</a></li>
<li><a href="#">LINK2</a>
    <ul class="#">
        <li><a href="#">LINK2a</a>
            <ul class="#">
            <li><a href="#">LINK2b</a></li>
            <li><a href="#">LINK2c</a></li>
            <li><a href="#">LINK2d</a></li>
            <li><a href="#">LINK2e</a></li>
            <li><a href="#">LINK2f</a></li>
            </ul>
        </li>
    </ul>
</li>
    <li><a href="#">LINK3</a></li>
    <li><a href="#">LINK4</a></li>
    <li><a href="#">LINK5</a></li>
</ul>

CSS:

a, img { border:none; }
* { margin:0; padding:0; }
.nav{
display:block;
list-style:none;
text-align: left;
position: relative;
height: 30px;
}
.nav li { 
display: block;
position: relative;
float: left;    
border: 1px solid #FFF;
}
.nav li a { 
width: 125px;
height: 30px;
display: table-cell;
vertical-align: middle;
text-decoration: none;
font-size: 12px;
font-family: Arial, Verdana, Helvetica, sans-serif;
text-align: center;
color: #000;
z-index: 2000;      
background-color: #999;
}
li.active {
background-color: #999 ;
color: #000;
}
.nav li a:hover {
top: 30px;  
}
.nav li:hover > a {
color:#fff;
background-color:#333;  
}
.nav li ul { 
width: 125px;
height: 25px;
position: absolute;
left: -9999px;  
border: 1px solid #FFF;
}
.nav li:hover ul {
left: -2px;
}
.nav li li:hover > a {
color:#000;
background-color:#999;  
}
.nav li li{ 
position: relative;
border: 1px solid #FFF;
height: 25px;
}
.nav li li a {
height: 25px;
top: 25px;
text-decoration: none;
font-size: 9px;
font-family: Arial, Verdana, Helvetica, sans-serif;
text-align: center;
display: table-cell;
vertical-align: middle;
color: #000;
z-index: 2000;      
background-color: #999;
}
li li.active {
background-color: #a9d9d9 ;
color: #007f7b;
}
.nav li li:hover ul {
left: -2px;
top: 25px; 
}
ul.nav li > ul {
width: 700px;
height: 25px;
background-color:blue;
}
ul.nav li > ul > li > ul {
background-color:red;
height: 25px; 
}
ul.nav li > ul > li { display: none; }
ul.nav li:hover li { display: block; }
  • 0
    Будьте более конкретны в вопросе, пожалуйста.
  • 0
    Привет Арун, извиняюсь за то, что не ясно. Если вы посмотрите на мой jsfiddle, когда вы пролонгируете ссылку 2 - ссылка 2a находится в правильном месте, ссылки 2b-2f должны быть выровнены в крайнее левое положение. Надеюсь, это немного понятнее?
Показать ещё 2 комментария
Теги:
css-float

1 ответ

1
Лучший ответ

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

.nav li ul стал .nav li > ul

.nav li:hover ul стал .nav > li:hover > ul

.nav li li:hover ul стал .nav li > li:hover ul

ul.nav li > ul > li { display: none; } ul.nav li > ul > li { display: none; } стал ul.nav li ul ul { display: none; } ul.nav li ul ul { display: none; }

ul.nav li:hover li { display: block; } ul.nav li:hover li { display: block; } стал ul.nav li:hover > ul { display: block; } ul.nav li:hover > ul { display: block; }

Добавлено:

ul.nav li ul ul {
    position: absolute;
    top:25px;
    left: -129px;
}
ul.nav li li:hover > a {
    color: white;
    background-color: #333
}
  • 0
    Спасибо за вашу помощь, Джованни, есть какие-нибудь идеи по перемещению третьего уровня влево в соответствии со ссылкой 1?
  • 0
    Вы имеете в виду что - то вроде этого ?
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню