下拉菜单项不垂直堆叠

时间:2016-02-07 21:58:46

标签: html css drop-down-menu

嗨我有一个带有下拉菜单的网站,由于某种原因,它的项目是水平堆叠的。 HTML就像这样

<li id="menuitem">a</li>
<ul id="dropdown">
<li id="dropdownelement">b</li>
</ul>

除非悬停,否则CSS会将ul设置为隐藏。和李元素相对

https://jsfiddle.net/u8pmtc4z/

2 个答案:

答案 0 :(得分:2)

您的实施存在一些问题。

您可以测试此demo并查看这是否是所需的行为。

您应该将ul ul元素设置为absolute,将ul li设置为relative,并设置inline-block显示道具。

然后,将#navbar ul li:hover ul更改为:

#navbar ul li:hover ul {
  display: block;
  position: absolute;
  left: 0;
  padding: 0;
}

这会将嵌套下拉列表设置为位于父级下方并与左侧对齐。

此外,您在标记中使用了两次#accountDropDownElement ID。我在演示中将其替换为类,因为id必须是唯一的!

这是完整的代码:

#navbar ul {
	position: relative;
	display: inline-table;
	list-style-type: none;
	width: 965px;
}

#navbar ul:after {
	content: "";
	clear: both; 
	display: block;
}

#navbar ul ul {
  display: none;
  position: absolute;
  top: 66px;
  left: 0;
  padding: 0;
}

#navbar ul ul li {
  float: none; 
  position: relative;
}


#navbar ul li {
  float: left;
  padding: 0 10px;
  border-radius: 25px;
}

#navbar ul li:hover > a {
  border: 1px rgb(204, 255, 102) solid;
	background-color: rgb(204, 255, 102);
	box-shadow: none;
}

#navbar ul li:hover ul {
  display: block;
  position: absolute;
  left: 0;
  padding: 0;
}

#navbar ul li:hover ul li {
  float: none;
}

#navbar ul li a {
	border-radius: 25px;
	border: 1px rgb(57, 232, 38) solid;
	background-color: rgb(57, 232, 38);
	box-shadow: 0px 3px 3px rgba(0,0,0,0.5);
	color: white;
	display: block;
	float: left;
	font-family: "micross";
	font-size: 30px;
	padding: 15px;
	text-decoration: none;
}

#navbar ul li a:hover {
	border: 1px rgb(204, 255, 102) solid;
	background-color: rgb(204, 255, 102);
	box-shadow: none;
}
#accountButton:hover {
	cursor: pointer;
}

#accountDropDownImage {
    float: left;
}

.accountDropDownElement {
    width: 100px;
    background-color: rgb(57, 232, 38);
    color: white;
    font-size: 20px;
    margin: 0;
    padding-left: 20px; 
    padding-right: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
} 
<link rel="stylesheet" href="CSS/style.css">
<link rel="stylesheet" href="CSS/navbar.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<div id="navbar">
  <ul id="navbarList">
    <li id="homeButton"><a href="home.php">Home</a></li>
    <li id="blogButton"><a href="blog.php">Blog</a></li>
    <li id="downloadsButton"><a href="downloads.php">Downloads</a></li>
    <li id="managerButton"><a href="manager.php">Manager</a></li>
    <li id="accountButton"><a id='accountAButton'    href='manager.php'>Luke</a>
      <ul id='dropDownList'>
        <li><p class='accountDropDownElement'>Logout</p></li>
        <li><p class='accountDropDownElement'>Login</p></li>
      </ul>
    </li>
  </ul>
</div>

答案 1 :(得分:0)

如果你将css的宽度调整为65而不是965,你会看到左边的链接堆栈,因为我假设你想要的。