#html #css #dropdown
#HTML #css #выпадающий
Вопрос:
Возникли некоторые проблемы с корректным отображением выпадающего меню при наведении курсора мыши; в настоящее время оно отображает все в одной строке, а также, похоже, не перекрывается, несмотря на то, что z-index установлен в 1. Поиграл с созданием проектов в p, a и div, но все равно зашел в тупик. Любой совет?
HTML
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<nav class="navbar">
<a href="/" id="name-link">Name</a>
<div class="dropdown">
<a>Projects</a>
<div class="dropdown-content">
<a href="/">Project 1</a>
<a href="/">Project 2</a>
<a href="/">Project 3</a>
</div>
</div>
<a href="/about.html">About</a>
<a href="/">Contact</a>
</nav>
</body>
</html>
CSS
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
letter-spacing: .015em;
color: #000000;
}
a:link, a:visited {
color: #000000;
text-decoration: none;
}
a:hover, a:active {
color: #a9c4d4;
text-decoration: underline;
}
.navbar {
overflow: hidden;
font-size: 2.5em;
font-weight: 700;
position: fixed;
top: 0;
width: 100%;
list-style-type: none;
margin: 0px 0px 0px 110px;
padding: 10px 0px 10px 0px;
background-color: #ffffff;
}
.navbar a {
float: left;
display: block;
margin: 10px;
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #ffffff;
z-index: 1;
}
.dropdown-content a {
float: none;
margin: 10px;
display: block;
text-align: left;
}
.dropdown:hover .dropdown-content {
display: block;
}
#name-link {
color: #a9c4d4;
text-decoration: none;
}
a.selected-link {
text-decoration: underline;
}
jsfiddle здесь: https://jsfiddle.net/29gev50b/2 /
Ответ №1:
измените css «выпадающего содержимого». Абсолютная позиция делает это. удалите эту позицию абсолютного css из «выпадающего содержимого», и она будет работать нормально.
Комментарии:
1. Изменение этой решенной части проблемы: меню теперь отображается в блоке и правильно расположено в разделе «проекты». Однако меню по-прежнему не перекрывает остальную часть панели навигации и основного содержимого div. При расширении меню остальная часть текста навигационной ссылки также перемещается вправо.
2. удалить переполнение: скрыто для .navbar. И добавьте top: 70px (вы можете указать любое значение для top в соответствии с потребностями вашего дизайна), background: #ddd (укажите желаемый цвет фона.). надеюсь, это решит все проблемы. примечание: для этих изменений не удаляйте абсолютную позицию для «выпадающего содержимого».
3. это сработало! хотя я отмечу, что я добавил top:70px в .dropdown-content, а не .navbar
Ответ №2:
Вы не оставили достаточно места в своем navbar
контейнере div для расширения меню, поэтому оно отключается. z-index
не будет работать, потому что поле (div) недостаточно велико.
Добавьте min-height: 100px;
в свой navbar
, чтобы исправить.
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
letter-spacing: .015em;
color: #000000;
}
a:link,
a:visited {
color: #000000;
text-decoration: none;
}
a:hover,
a:active {
color: #a9c4d4;
text-decoration: underline;
}
.navbar {
overflow: hidden;
font-size: 2.5em;
font-weight: 700;
position: fixed;
top: 0;
width: 100%;
list-style-type: none;
margin: 0px 0px 0px 110px;
padding: 10px 0px 10px 0px;
min-height: 100px;
background-color: #ffffff;
}
.navbar a {
float: left;
display: block;
margin: 10px;
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #ffffff;
z-index: 1;
}
.dropdown-content a {
float: none;
margin: 10px;
display: block;
text-align: left;
}
.dropdown:hover .dropdown-content {
display: block;
}
#name-link {
color: #a9c4d4;
text-decoration: none;
}
a.selected-link {
text-decoration: underline;
}
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<nav class="navbar">
<a href="/" id="name-link">Name</a>
<div class="dropdown">
<a>Projects</a>
<div class="dropdown-content">
<a href="/">Project 1</a>
<a href="/">Project 2</a>
<a href="/">Project 3</a>
</div>
</div>
<a href="/about.html">About</a>
<a href="/">Contact</a>
</nav>
</body>
</html>