2010-11-10 2 views
3

Я создаю двухуровневое меню навигации для веб-сайта. Оба уровня всегда будут видны.Горизонтальное, двухуровневое меню навигации в CSS

Моя проблема: Я хотел бы

  • Уже 1-го и 2-го уровня меню по горизонтали, занимая одну строку каждый
  • левой выравнивать меню нижнего уровня с пунктом меню активного первого уровня
  • не имеют меню подуровень раздвинуть остальные пункты 1-й уровень меню справа

Детская ASCII искусство иллюстрации:

AAA BBBBBB CC DDD [1st level, B selected] 
    aa bbb ccccc [2nd level, options of B visible] 


CSS:

.nav, .nav ul {list-style-type:none; margin:0; padding:0; float:left;} 
.navl ul li ul li {} 
.nav {margin-bottom:-1px;margin-right:-1px;} 

.nav a {float:left; line-height:16px; padding:4px 0; border:1px solid #fff; margin-bottom:-1px;} 

.nav ul {position:relative; clear:left;} 
.nav ul li {float:left; clear:left;} 
.nav a {position:relative;} 

.sub-li a {margin-right:0;} 

HTML:

<ul class="nav"> 
    <li><a href="#url">Home</a></li> 
</ul> 
<ul class="nav"> 
    <li class="sub-li"><a class="sub-a" href="#url">Library</a> 
     <ul> 
      <li><a href="#url">Opening hours</a></li> 
      <li><a href="#url">Librarians</a></li> 
      <li><a href="#url">Geeks</a></li> 
     </ul> 
    </li> 
</ul> 
<ul class="nav"> 
    <li><a href="#url">About us</a></li> 
</ul> 

В этом примере, я не могу даже получить меню уровня горизонталь 2nd. Но я уже вижу, что длинные заголовки в меню 2-го уровня нажимают на последний пункт меню «1» у нас справа, что выглядит уродливо.

Любая помощь очень ценится!

ответ

2

Ключом к тому, чтобы не надавливать на 1-й уровень, является положение: абсолютное; left: 0; на уровне 2-го уровня. Вам нужно будет добавить позицию: relative; to li.sub-li

+0

Привет, Джоэл, спасибо за ваш комментарий. Не могли бы вы уточнить, где я должен поставить позицию абсолютной и относительной? – PeerBr

+1

Вы должны объединить все ul.nav в одну большую улицу. Если вы это сделаете и используете эти стили, вы должны получить то, что после .nav, .nav ul {list-style-type: none; Маржа: 0; padding: 0;} .nav li {float: left; margin: 0 5px; } .nav .sub-li {position: relative;} .nav ul {position: absolute; left: 0; width: 600px;} .nav ul li {float: left;} – joeljoeljoel

+1

Вы сделали это! Огромное спасибо. Для всех, кто читает это в будущем, нужно добавить margin-left: -1px; на «.nav ul», поэтому подменю прекрасно располагается под элементом. – PeerBr

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