Dobrovoi Master
сделано с душой
В состоянии постоянного подключения...

Вертикальное меню навигации CSS с подменю

В недавнем прошлом я подробно расписывал способ и технику создания «Вертикального меню для сайта». Мы рассмотрели решение выполнения простой навигации, построенной полностью на использовании и небольшого файла изображения. В своих комментариях читатели высказались о том, что вариант с вложенными подпунктами не был бы лишним, ну что же, как говориться: сказано — сделано.
Сегодня опишу, какие изменения необходимо внести в css и разметку html, чтобы получить интересное вертикальное навигации с .

Последнее обновление: 12.12.2016.
 
Меню с подменю

Пример меню посмотрели, теперь давайте разберем, какие изменения стоит внести в файл стилей .css, чтобы заработало подменю. Для этого вам следует добавить следующий код:
 

#menu li span {
 position: absolute;
        left: 99%;
        margin-top: -32px;
        width: 100%;
        max-width: 12em;
        display: none;
}
#menu li:hover span {
 display: block;
}
#menu li span a {
 display: inline;
}

 
В итоге мы получаем следующую полную картину:
 

#menu {
 max-width: 200px;
        margin: 0 auto;
        text-align: left
}
#menu ul {
 list-style: none;
        margin: 0;
        padding: 0;
        position: relative
}
#menu li a {
 height: 32px;
        height: 24px;
        text-decoration: none;
        font: 14px;
}
#menu li a:link, #menu li a:visited {
 color: #D3D3D9;
 display: block;
        background: url(menu.gif);
        padding: 8px 0 0 35px;
}
#menu li a:hover {
 color: #0D1FD2;
 background: url(menu.gif) 0 -32px;
        padding: 8px 0 0 35px;
}
#menu li span {
 position: absolute;
        left: 99%;
        margin-top: -32px;
        width: 100%;
        max-width: 12em;
        display: none;
}
#menu li:hover span {
 display: block;
}
#menu li span a {
 display: inline;
}

 
На этом все, оформление подменю для нашего списка готово, осталось лишь правильно прописать навигационный блок непосредственно на странице html. Приведу пример разметки двухуровнего меню, а дальше вам остается лишь добавлять новые пункты, столько — сколько душе угодно.
 

<div id="menu">
    <ul>
        <li>
            <a href="#">CSS Главная</a>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 1</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 2</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 3</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 4</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 5</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
        <li>
            <a href="#">CSS Меню</a> <span><a href="#">Подменю 6</a> <a href="#">Ссылка</a> <a href="#">Ссылка</a></span>
        </li>
    </ul>
</div>

 
Как видите, дорогие други мои, все не так сложно, было простое вертикальное меню, немного волшебства css и получаем функциональное меню с подпунктами.

С Уважением, Андрей .

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

Всего комментариев: 32

  • Евгений: 3 сентября, 2012 в 07:11

    Здравствуйте. Подскажите, как установить на сайт?

    Ответить
  • yavv: 11 октября, 2012 в 17:00

    Шустрое меню, спасибо. Может подскажете, как сделать из этого двухуровнего меню трехуровневое?

    Ответить
    • driver: 11 октября, 2012 в 18:21

      Спасибо за отзыв. Если считать подпункты, то это меню уже двухуровневое. Меню выстроено в виде неупорядоченного списка, так что добавить к пунктам следующие вложения не составляет труда, но в данном виде не предусмотрена возможность вложений третьего уровня. Для этого необходимо перестраивать всю структуру меню, как html так и css. А это уже совсем другая история.
      Удачи!

      Ответить
  • hhb: 2 декабря, 2012 в 21:20

    Спасибо, получил приятный мотив!

    Ответить
  • Агдрей: 20 октября, 2013 в 01:19

    Могу узнать почему левый маркер (точка) остаётся?

    Ответить
    • driver: 20 октября, 2013 в 01:29

      Здравствуйте. Можете.
      Если ничего не меняли кардинально в css, то маркировки у списков быть не должно.
      Хотя, лучше перестрахуйтесь и сделайте так:

      #menu ul {
      list-style: none;
      margin: 0;
      padding: 0;
      }
      #menu ul {
      list-style: none;
      margin: 0;
      padding: 0;
      }

      Ответить
      • Агдрей: 20 октября, 2013 в 01:41

        Спасибо. Я разабрался, просто кое что не учёл.

        Ответить
  • Сергей: 4 марта, 2014 в 14:27

    Добрый день!
    Установил все на сайт. В итоге на странице отображается все , что в коде (Главное, меню, ссылка 1, 2,и т.д.
    Что я сделал не так? Подскажите
    Заранее спасибо

    Ответить
    • driver: 4 марта, 2014 в 17:05

      День добрый!
      Начнём с того, что у вас нарушена структура, дублируется <div id="menu"> в html и в тоже время отсутствует закрывающий тег</div>. В CSS два раза прописаны правила для меню, но зато отсутствует одна закрывающая фигурная скобка } в самом конце кода css меню, из-за этого съехал весь дизайн сайта, должно быть так:#menu li span a { display: inline}
      Вовторых, не отображается фоновая картинка пунктов меню, проверьте правильно ли у вас указан путь до файла изображения: background:url(menu.gif);
      Если маркер списка остаётся, добавьте #menu ul {list-style: none;}
      А лучше верните всё на круги своя и начните встраивать меню заново, учитывая все мои поправки )))

      Ответить
      • Сергей: 5 марта, 2014 в 14:25

        Спасибо большое !
        Начну с начала.

        Ответить
  • Роман: 16 марта, 2014 в 21:58

    День добрый!
    Подскажите, как правильно добавить третий уровень в меню, что только не делал…Не могу заставить третий уровень отображаться при наведении курсора, и не отображаться при наведении на первый уровень. Показывает третий уровень вместе со вторым.

    Ответить
    • driver: 16 марта, 2014 в 22:51

      Здравствуйте.
      По поводу третьего уровня отвечал выше в комментах ↑ добавить больше нечего((
      Разве что могу предложить меню на HTML5 http://jsfiddle.net/driver/fVZsQ/ базовое оформление, стили можете сформировать сами, а так, в инете вариантов достаточно.
      Удачи!

      Ответить
      • Роман: 16 марта, 2014 в 23:09

        Проморгал… Прошу прощенья за повторный вопрос! За подсказку спасибо.

        Ответить
  • Yura: 16 июля, 2015 в 01:40

    Приветствую
    такой вопрос
    можно ли сделать под каждую кнопку в меню разные картинки?
    если взять за основу вашу меню.гиф
    т.е. будут меню1.гиф, меню2.гиф и т.д.

    Ответить

Оставить комментарий

Ваш email не будет опубликован.

Вы можете использовать следующие HTML тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>