#html #css #drop-down-menu #html-lists
#HTML #css #выпадающее меню #html-списки
Вопрос:
Я пытаюсь создать вертикальное выпадающее меню. При наведении курсора мыши на элемент li отобразите выпадающее меню непосредственно рядом с элементом li (справа).
Это мой текущий CSS:
div.menu div.navigation ul {
width: 100%;
position: relative;
display: inline-table;
}
div.menu div.navigation ul:after {
content: "";
clear: both;
display: block;
}
div.menu div.navigation ul ul {
display: none;
position: absolute;
left: 300px;
top: 0;
}
div.menu div.navigation ul ul li {
background: #1b2133;
}
div.menu div.navigation ul li:hover > ul {
display: block;
}
div.menu div.navigation ul li a {
color: #e4ebf7;
text-decoration: none;
font-size: 16px;
padding: 18px 30px;
display: block;
}
div.menu div.navigation ul li a:hover {
background: #0c1224;
}
div.menu div.navigation ul li a i {
margin-right: 5px;
}
div.right-container {
height: 100%;
width: calc(100% - 300px);
position: relative;
top: 0;
left: 300px;
display: table;
}
Однако всякий раз, когда я навожу курсор на элемент, выпадающее меню отображается в верхней части меню навигации:
Я попытался установить значение top: 0; но затем выпадающее меню появляется на 1 li ниже родительского li.
Приветствия!
РЕДАКТИРОВАТЬ: В соответствии с запросом, вот HTML-код, который я использую (очевидно, что это все еще продолжается).
<div class="navigation">
<ul>
<li><a href="<?php echo get_admin_url(); ?>"><i class="fa fa-home" aria-hidden="true"></i>Dashboard</a>
<ul>
<li><a href="<?php echo get_admin_url(); ?>upgrade.php">Updates</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-picture-o" aria-hidden="true"></i>Media Library</a>
<ul>
<li><a href="#">Media Library</a></li>
<li><a href="#">Upload</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-user" aria-hidden="true"></i>Users</a>
<ul>
<li><a href="#">All Users</a></li>
<li><a href="#">Your Profile</a></li>
<li><a href="#">Create New Profile</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-paint-brush" aria-hidden="true"></i>Appearance</a>
<ul>
<li><a href="#">Themes</a></li>
<li><a href="#">Widgets</a></li>
<li><a href="#">Menus</a></li>
<li><a href="#">Theme Editor</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-plug" aria-hidden="true"></i>Plugins</a>
<ul>
<li><a href="#">Installed Plugins</a></li>
<li><a href="#">Install A Plugin</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-cog" aria-hidden="true"></i>Settings</a>
<ul>
<li><a href="#">General</a></li>
<li><a href="#">Reading</a></li>
<li><a href="#">Media</a></li>
<li><a href="#">Permalinks</a></li>
</ul>
</li>
</ul>
</div>
<div class="right-container">
<p>Hi</p>
</div>
Комментарии:
1. Было бы хорошо, если бы вы могли опубликовать HTML этого кода. Это облегчило бы помощь. Спасибо! 🙂
2. Абсолютное позиционирование принимает ближайшего позиционированного предка в качестве точки отсчета. В вашем коде это, похоже, внешний UL. Если вы хотите, чтобы родительский LI был точкой отсчета, то вам нужно расположить его, по крайней мере, относительно.
Ответ №1:
Я написал свой собственный css, используя ваш HTML. Может быть, это может помочь.
В нем есть то же самое, что вы хотите.
HTML:
<div class="navigation">
<ul>
<li><a href="<?php echo get_admin_url(); ?>"><i class="fa fa-home" aria-hidden="true"></i>Dashboard</a>
<ul>
<li><a href="<?php echo get_admin_url(); ?>upgrade.php">Updates</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-picture-o" aria-hidden="true"></i>Media Library</a>
<ul>
<li><a href="#">Media Library</a></li>
<li><a href="#">Upload</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-user" aria-hidden="true"></i>Users</a>
<ul>
<li><a href="#">All Users</a></li>
<li><a href="#">Your Profile</a></li>
<li><a href="#">Create New Profile</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-paint-brush" aria-hidden="true"></i>Appearance</a>
<ul>
<li><a href="#">Themes</a></li>
<li><a href="#">Widgets</a></li>
<li><a href="#">Menus</a></li>
<li><a href="#">Theme Editor</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-plug" aria-hidden="true"></i>Plugins</a>
<ul>
<li><a href="#">Installed Plugins</a></li>
<li><a href="#">Install A Plugin</a></li>
</ul>
</li>
<li><a href="#"><i class="fa fa-cog" aria-hidden="true"></i>Settings</a>
<ul>
<li><a href="#">General</a></li>
<li><a href="#">Reading</a></li>
<li><a href="#">Media</a></li>
<li><a href="#">Permalinks</a></li>
</ul>
</li>
</ul>
</div>
CSS:
body {
margin: 0;
padding: 0;
}
.navigation ul {
list-style: none;
margin: 0;
}
.navigation ul li {
position: relative;
padding: 15px;
background-color: #0c1224;
width: 200px;
}
.navigation ul ul {
visibility: hidden;
position: absolute;
left: 82%;
top: -2%;
}
.navigation ul li:hover > ul {
visibility: visible;
}
.navigation ul li:hover {
background-color: #1b2133;
cursor: pointer;
}
.navigation ul li a {
text-decoration: none;
color: #FFF;
}