html,
body {
margin: 0;
padding: 0;
}
body {
width: 380px;
min-height: 280px;
padding: 10px;
font-size: 14px;
line-height: 1.4;
font-family: “Arial”, sans-serif;
background-color: #ecf0f1;
}
.main-menu {
position: relative;
margin: 0;
padding: 0;
list-style: none;
width: 200px;
background-color: #2980b9;
}
.main-menu a {
text-decoration: none;
display: block;
padding: 10px 15px;
color: #ffffff;
}
.main-menu .sub-menu {
position: absolute;
margin: 0;
padding: 0;
list-style: none;
top: 41px;
left: 180px;
background-color: #1abc9c;
z-index: 10px;
width: 200px;
}
.main-menu > li {
border-bottom: 2px solid #2c3e50;
}
.open {
background-color: #1abc9c;
}
.sub-menu > li {
border-bottom: 2px solid #2ecc71;
}
position: relative; перенесите в .main-menu > li.
Если всплывающих меню будет больше – каждое из них будет привязано к своему элементу основного меню…
z-index: 10px; – должно быть просто число.
Спасибо! Я не заметила, что на автомате добавила туда пиксели… Перенесла position: relative; в .main-menu > li. Но не очень понимаю… когда я прописываю .main-menu > li, я фактически говорю: “элемент списка главного меню”, но я ведь не уточняю, какой именно элемент списка… Как оно понимает, что я имею в виду - второй сверху (Курсы)…?
1 лайк
В этом испытании всплывающее меню добавлено в HTML только во втором элементе списка.
А, вообще в нормальном меню всплывающее может быть в каждом элементе списка.
Примерно так:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Испытание: многоуровневое меню</title>
<style>
html,
body {
margin: 0;
padding: 0;
}
body {
width: 380px;
min-height: 280px;
padding: 10px;
font-family: "Arial", sans-serif;
font-size: 14px;
line-height: 1.4;
background: #ecf0f1;
}
.main-menu,
.sub-menu {
width: 200px;
margin: 0;
padding: 0;
list-style: none;
}
.main-menu li {
position: relative;
}
.main-menu a {
display: block;
color: #fff;
text-decoration: none;
padding: 10px 15px;
}
.main-menu > li > a {
background: #2980b9;
border-bottom: 2px solid #2c3e50;
}
.main-menu .sub-menu {
display: none;
position: absolute;
top: 0px;
left: 180px;
z-index: 10;
}
.main-menu .sub-menu a {
background: #1abc9c;
border-bottom: 2px solid #2ecc71;
}
.main-menu > li > a:hover {
background: #1abc9c;
}
.main-menu li:hover .sub-menu {
display: block;
}
.main-menu .sub-menu a:hover {
background: #2ecc71;
}
</style>
</head>
<body>
<ul class="main-menu">
<li><a href="/demos">Демонстрации</a></li>
<li class="opened">
<a href="/courses">Курсы</a>
<ul class="sub-menu">
<li><a href="/courses/4">Знакомство</a></li>
<li><a href="/courses/42">Селекторы</a></li>
<li><a href="/courses/45">Позиционирование</a></li>
</ul>
</li>
<li>
<a href="/public_profiles">Участники</a>
<ul class="sub-menu">
<li><a href="/courses/4">Знакомство</a></li>
<li><a href="/courses/42">Селекторы</a></li>
<li><a href="/courses/45">Позиционирование</a></li>
</ul>
</li>
<li>
<a href="/achievments">Достижения</a>
<ul class="sub-menu">
<li><a href="/courses/4">Знакомство</a></li>
<li><a href="/courses/42">Селекторы</a></li>
<li><a href="/courses/45">Позиционирование</a></li>
</ul>
<li>
<a href="/profile">Профиль</a>
<ul class="sub-menu">
<li><a href="/courses/4">Знакомство</a></li>
<li><a href="/courses/42">Селекторы</a></li>
<li><a href="/courses/45">Позиционирование</a></li>
</ul>
</li>
</ul>
</body>
</html>
1 лайк
Спасибо! Код в основном разобрала, но не могу понять, что задается вот этим:
.main-menu li:hover .sub-menu {
display: block;
}
???
.main-menu .sub-menu {
display: none;
}
это правило скрывает всплывающее меню.
.main-menu li:hover .sub-menu {
display: block;
}
а это при наведении на элемент основного меню – всплывающее меню показывает.
https://htmlacademy.ru/courses/50/run/23
Спасибо!!! Всё поняла! Всё стало на свои места!!! ))) Сейчас еще повторю “Отображаем подменю при наведении”!! Спасибо!!