问题是,当显示下拉菜单时,我的下拉菜单的子菜单没有出现在其容器元素之外。在代码中我有主菜单和子菜单项。主要菜单项目包括:主页,关于,服务,产品和联系方式。每个主菜单项的子菜单项为:A,B,C,D和E.我希望子菜单项显示在每个主菜单项下面。仅当我增加主菜单项的填充以使主菜单容器位于子菜单项的背景中时,子菜单项才会出现。他们不这样做。这是我的代码:
.menu{
width: 100%;
background: #d80000;
float: left;
margin-bottom: 50px;
display: block;
overflow: hidden;
padding: 10px 10px;
}
.menu .mainmenu{
margin-left: -40px;
/*display: none;*/
}
.menu .mainmenu .heading{
float: left;
list-style: none;
margin-right: 1px;
}
.menu .mainmenu .heading a{
background: #fff;
padding: 8px 100px;
text-decoration: none;
color: #d80000;
text-transform: uppercase;
font-weight: bold;
font-family: verdana;
font-size: 14px;
}
.menu .mainmenu .heading a:hover{
background: #d80000;
color: #fff;
}
.menu:hover .mainmenu{
display: block;
}
.heading{
position: relative;
}
.submenu{
display: none;
background: #d80000;
list-style: none;
padding: 10px 50px;
margin-left: -40px;
}
.submenu .items{
display: block;
}
.submenu .items a{
text-decoration: none;
}
.heading:hover .submenu{
display: block;
}
.submenu .items a:hover{
background: #d80000;
color: #fff;
display: block;
}
li:hover ul
{
display: block;
position: absolute;
}
li:hover li
{
float: none;
font-size: 11px;
}
li:hover a
{
background: #d80000;
}
li:hover li a:hover
{
background: #d80000;
}
ul li a:hover
{
background: #d80000;
}
<html>
<head>
<title>Menu</title>
<link rel="stylesheet" type="text/css" href="style1.css">
</head>
<body>
<div class="menu">
<ul class="mainmenu">
<li class="heading"><a href="#">Home</a>
<ul class="submenu">
<li class="items"><a href=#">A</a></li>
<li class="items"><a href=#">B</a></li>
<li class="items"><a href=#">C</a></li>
<li class="items"><a href=#">D</a></li>
<li class="items"><a href=#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">About</a>
<ul class="submenu">
<li class="items"><a href=#">A</a></li>
<li class="items"><a href=#">B</a></li>
<li class="items"><a href=#">C</a></li>
<li class="items"><a href=#">D</a></li>
<li class="items"><a href=#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Services</a>
<ul class="submenu">
<li class="items"><a href=#">A</a></li>
<li class="items"><a href=#">B</a></li>
<li class="items"><a href=#">C</a></li>
<li class="items"><a href=#">D</a></li>
<li class="items"><a href=#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Products</a>
<ul class="submenu">
<li class="items"><a href=#">A</a></li>
<li class="items"><a href=#">B</a></li>
<li class="items"><a href=#">C</a></li>
<li class="items"><a href=#">D</a></li>
<li class="items"><a href=#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Contact</a>
<ul class="submenu">
<li class="items"><a href=#">A</a></li>
<li class="items"><a href=#">B</a></li>
<li class="items"><a href=#">C</a></li>
<li class="items"><a href=#">D</a></li>
<li class="items"><a href=#">E</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
预期的结果是显示子菜单下拉并显示在主菜单项下方,因为我们将鼠标悬停在每个主菜单项上,但此代码中没有发生。
因为你的.menu课程中有overflow: hidden;
。
如果删除此行,则会显示子菜单。
你可以使用另一个类来控制浮动。
.clear { clear: both; }
并在你的最后一次<li>
之后追加:
<div class="clear"></div>
在这里你可以检查codepen
<div class="menu">
<ul class="mainmenu">
<li class="heading"><a href="#">Home</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">About</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Services</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Products</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Contact</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
</ul>
</div>
如果一个元素高于包含它的元素,并且它被浮动,它将溢出其容器外部。用代码修复此问题:
.clearfix::after {
content: "";
clear: both;
display: table;
}
你有很多<a href=#">
缺少引号。它应该是<a href="#">
而不是
谢谢你的回答。在删除上述代码中的所有错误后,我将找到最终代码。
重点:
这个答案只是将我上面发布的错误代码更新为更正后的代码。
.menu{
background: #d80000;
width: 100%;
padding:10px 10px;
}
.mainmenu{
list-style: none;
display: flex;
}
.mainmenu .heading{
margin-right: 2px;
}
.mainmenu .heading a{
text-decoration: none;
display: inline-block;
padding: 10px 20px;
color: #d80000;
background: #fff;
position: relative;
width: 80px;
text-align: center;
text-transform: uppercase;
}
.submenu{
list-style: none;
position: absolute;
display: none;
}
.heading a:hover{
background: #d80000;
color: #fff;
}
.heading:hover .submenu{
display: block;
margin-left: -40px;
}
.submenu .items a{
width: 80px;
text-align: center;
border-top: 1px solid #d80000;
}
<html>
<head>
<title>Menu</title>
<link rel="stylesheet" type="text/css" href="style4.css">
</head>
<body>
<div class="menu">
<ul class="mainmenu">
<li class="heading"><a href="#">Home</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">About</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Services</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Products</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
<li class="heading"><a href="#">Contact</a>
<ul class="submenu">
<li class="items"><a href="#">A</a></li>
<li class="items"><a href="#">B</a></li>
<li class="items"><a href="#">C</a></li>
<li class="items"><a href="#">D</a></li>
<li class="items"><a href="#">E</a></li>
</ul>
</li>
</ul>
</div>
</body>
</html>