Почему в html не срабатывает выпадающий подпункт?
При наведении на пункт 2 должны выпадать подпункты, но этого не происходит. Помогите, пожалуйста. Заранее спасибо.
<html lang="en">
<head>
<link href="main.css" rel="stylesheet">
<title>Тест</title>
<meta charset="utf-8">
</head>
<body>
<header>
<nav>
<ul class="nav_links">
<li><a href="#">пункт 1</a>
</li>
<li><a href="#">пункт 2</a>
<ul class="s_links">
<li><a href="#">подпункт 1</a></li>
<li><a href="#">подпункт 2</a></li>
<li><a href="#">подпункт 3</a></li>
</ul>
</li>
<li><a href="#">пункт 3</a>
</li>
<li><a href="#">пункт 4</a>
</li>
</ul>
</nav>
</header>
</body>
</html>
@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
li, a {
font-family: 'Open Sans', sans-serif;
text-decoration: none;
}
header {
font-size: 21px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 30px 30%;
height: 50px;
background-color: #358;
}
.nav_links {
list-style: none;
}
.nav_links li {
display: inline-block;
padding: 20px 40px;
position: relative;
}
.nav_links li a {
transition: all .3s ease 0s;
color: #2aaa00;
}
.nav_links li a:hover {
color: #3fff00;
}
.nav_links li a:hover ul.s_links {
top: 59px;
}
.s_links {
font-size: 18px;
position: absolute;
background-color: #358;
left: 0;
top: -390px;
transition: all .3s ease 0s;
z-index: -1;
}
.s_links li {
display: block;
padding: 20px 40px;
border-top: 1px solid #fff;
}
.s_links li a {
transition: all .3s ease 0s;
}
.s_links li a:hover {
color: #3fff00;
}
Ответы (1 шт):
Автор решения: Parawaram
→ Ссылка
Если поменять в css это место будет рабоать:
.nav_links li:hover ul.s_links {top: 59px;}
Но это не идеальный вариант. Проблема была в том, что селектор a:hover ul.s_links пытается найти спискок который внутри ссылки на которую наводится курсор. В данном случае в HTML список не внутри ссылки а рядом с ней. В CSS нельзя изменить соседний или родительский элеменет от того, с которым произошло взаимодействие (:hover, :active ...).