<ul class="vyp-menu"> <li><a href="#1">пункт 1</a></li> <li><a href="#2">пункт 2</a> <ul> <li><a href="#2.1">подпункт 2.1</a> <ul> <li><a href="#2.1.1">подпункт 2.2.1</a></li> <li><a href="#2.2.2">подпункт 2.2.2</a></li> <li><a href="#2.2.3">подпункт 2.2.3</a> <ul> <li><a href="#2.2.3.1">подпункт 2.2.3.1</a></li> <li><a href="#2.2.3.2">подпункт 2.2.3.2</a></li> <li><a href="#2.2.3.3">подпункт 2.2.3.3</a></li> </ul> </li> </ul> </li> <li><a href="#2.2">подпункт 2.2</a></li> <li><a href="#2.3">подпункт 2.3</a></li> </ul> </li> <li><a href="#3">пункт 3</a></li> </ul>
Пример
CSS для простого многоуровневого выпадающего списка
<style type="text/css"> .vyp-menu, .vyp-menu li, .vyp-menu ul, .vyp-menu a, .vyp-menu:after { margin: 0; padding: 0; z-index: 200; display: block; } .vyp-menu:after { /* убираем после меню действие float */ clear: both; content: "";} .vyp-menu > li { float: left; } /* горизонтальное размещение пунктов */ .vyp-menu li { white-space: nowrap; /* содержимое на одной строке */ position: relative; } .vyp-menu > li, .vyp-menu > li > ul > li, .vyp-menu > li > ul > li > ul > li { overflow: hidden; } /* всё, что за пределами элемента, скрыто */ .vyp-menu > li:hover, .vyp-menu > li > ul > li:hover, .vyp-menu > li > ul > li > ul > li:hover {overflow: visible;} .vyp-menu li ul li, .vyp-menu li ul li a { width: 100%; } /* фон подпунктов равной ширины */ .vyp-menu ul { position: absolute; } .vyp-menu ul ul { left: 100%; top: 0; } /* третий и четвёртый список позиционируется не вниз, а вправо. Можно часть списков повернуть и влево, но тогда width должен быть задан в px */ </style>
Пример.
В дополнение к вышеуказанному CSS для красивого меню
<style type="text/css"> .vyp-menu { background: #808080; background: -webkit-linear-gradient(#fff, #808080); background: -moz-linear-gradient(#fff, #808080); background: -o-linear-gradient(#fff, #808080); background: -ms-linear-gradient(#fff, #808080); background: linear-gradient(#fff, #808080); border-radius: 5px; } .vyp-menu > li:first-child {border-radius: 5px 0 0 5px; border-left: none;} .vyp-menu > li {border-left: 1px solid #ccc;} .vyp-menu > li:hover {background: #fff;} .vyp-menu li li {background: #fff content-box; padding: 1px 1px 0px 0px; border-right: 1px solid #ccc;} .vyp-menu li li:last-child {border-radius: 0 0 5px 5px;} .vyp-menu li a { line-height: 40px; padding: 0 14px; text-decoration: none; } </style>Можно добавить эффект постепенного появления. Вместо
.vyp-menu > li, .vyp-menu > li > ul > li, .vyp-menu > li > ul > li > ul > li { overflow: hidden; } .vyp-menu > li:hover, .vyp-menu > li > ul > li:hover, .vyp-menu > li > ul > li > ul > li:hover {overflow: visible;}пишем
.vyp-menu > li > ul > li, .vyp-menu > li > ul > li > ul > li, .vyp-menu > li > ul > li > ul > li > ul > li { height: 0px; -moz-transition: 0.3s; -o-transition: 0.3s; -webkit-transition: 0.3s; -ms-transition: 0.3s; overflow: hidden;} .vyp-menu > li:hover > ul > li, .vyp-menu > li > ul > li:hover > ul > li, .vyp-menu > li > ul > li > ul > li:hover > ul > li { height: 40px; overflow: visible;}
Пример
С помощью псевдоэлементов в примере выше были добавлены знаки +-.
CSS
<style type="text/css"> .strelka:after { content: "\2b"; position: absolute; right: 1px; bottom: -4px; } .strelka:hover:after {content: "\2d";} </style>
HTML того li, который будет содержать список
<li class="strelka">...</li>
Похожие статьи:
16 комментариев:
"не работает" - не выпадает?
Вместо "адрес_куда_ведёт_Пункт" пишите URL-адрес ярлыка
<html>
<head>
<style>
ul, li {
margin:0;
padding:0;
list-style-type:none;
}
#menu {
display:block;
float: right;
}
#menu > li {
display:inline-block;
position:relative;
}
#menu > li > ul {
display:none;
}
#menu > li > ul > li > ul {
display:none;
}
#menu > li:hover > ul {
display:block;
float:left;
}
#menu > li > ul > li:hover > ul {
display:block;
float:left;
}
</style>
</head>
<body>
<ul id="menu">
<li><a href="#">МЕНЮ</a>
<ul>
<li><a href="#">Раздел1</a></li>
<li><a href="#">Раздел2</a></li>
<li><a href="#">Раздел3</a>
<ul>
<li><a href="#">Подраздел1</a></li>
<li><a href="#">Подраздел2</a></li>
<li><a href="#">Подраздел3</a></li>
<li><a href="#">Подраздел4</a></li>
<li><a href="#">Подраздел5</a></li>
<li><a href="#">Подраздел6</a></li>
<li><a href="#">Подраздел7</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</body>
</html>
, то при наведении на раздел 3 выпадает список с подразделами, однако пункты раздел 1 и раздел 2 тоже уезжают влево на уровень подразделов. Как не бился не могу исправить...
"...все таки я не перестаю удивляться, тому насколько глубоко люди озадачены своими мыслями, что абсолютно не видят ни чего вокруг, кроме своих иллюзорных мыслей и переворачивают смысл любой идей под свою фантазию!"
NMitra, вот покажи мне в моем сообщении, где я просил каки-то примеры со ссылками. Если ты не в состоянии читать по русски и определенно понимать русскоязычные тексты, не лезь в верстку! Изучи грамматику русского языка для начала, желательно с ее основ... Я сам тебе могу кучу ссылок навалить с примера меню и слева и справа и снизу и сверху, твоя ссылка одна из самых неинформативных из всех, которые можно найти. Я разве просил тебя выполнить тут для меня роль поисковой машины? Слава Богу, я и сам в состоянии ввести в поисковую строку необходимые буквы! И ситуация с быдлоумниками по всему ру сигменту сети именно вот такая. У меня есть вопросы в сети, наподобие этого, на которые не ответили до сих пор, а некоторым вопросам уже больше года, а некоторым еще больше. И везде наблюдается вот такая тенденция, умничает какая-то непонятная субстанция и что самое интересное, совершенно не в тему. Я не пойму совершенно, для чего и для кого пользователи ищущие, ответа у более мудрых верстальщиков, выкладывают свой рабочий код? Может ты знаешь? Наверное просто, для украшения своего сообщения, да?
Последний шанс тебе, NMitra, чтоб реабилитироваться - на своем неудачном примере, покажи мне решение моего вопроса, или вообще больше не отвечай мне, дабы не позорится.