html - 多个css下拉菜单出现在同一位置和位置
问题描述
我目前正在处理多个 css 下拉菜单,问题出在菜单出现的位置。如您所见,商店菜单位于其自己的位置,但服务菜单出现在与商店菜单之前相同的位置。我是前端 Web 开发的新手,所以任何人都可以帮我解决这个问题吗?
*{
margin: auto;
}
a{
text-decoration: none;
}
header{
display: flex;
direction: ltr;
background-color: gold;
padding: 15px;
}
.primaryHeaderMenu ul li ul{
position: absolute;
display: none;
padding: 15px 15px;
background-color: lightslategrey;
list-style: none;
margin: 0;
}
.primaryHeaderMenu ul li ul li{
padding-bottom: 10px;
}
.primaryHeaderMenu ul li:hover ul{
display: block;
}
.primaryItems{
display: inline;
padding-left: 30px;
}
.primaryHeaderMenu li a{
color: black;
font-weight: bold;
}
.secondaryHeaderMenu li a{
color: black;
font-weight: bold;
}
.primaryHeaderMenu{
flex-grow: 1;
}
.secondaryHeaderMenu li{
display: inline;
padding-left: 25px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/style.css">
<title>Irancell</title>
</head>
<body>
<header>
<div class="irancellLogo">
<a href="#">
<img src="/iracell_logo.png" alt="Irancell" width="60px" height="60px">
</a>
</div>
<div class="primaryHeaderMenu">
<ul>
<li class="primaryItems"><a href="#">Shop</a>
<ul>
<li><a href="#">ُSimcards</a></li>
<li><a href="#">Packages</a></li>
<li><a href="#">Devices</a></li>
<li><a href="#">Methods</a></li>
</ul>
</li>
<li class="primaryItems"><a href="#">Services</a>
<ul>
<li><a href="#">HighSpeed Net</a></li>
<li><a href="#">Applications</a></li>
<li><a href="#">Conversation</a></li>
<li><a href="#">Messaging</a></li>
<li><a href="#">Entertainment</a></li>
</ul>
</li>
<li class="primaryItems"><a href="#">Festivals</a></li>
<li class="primaryItems"><a href="#">Support</a></li>
<li class="primaryItems"><a href="#">About Us</a></li>
<li class="primaryItems"><a href="#">Cooperation</a></li>
</ul>
</div>
<div class="secondaryHeaderMenu">
<ul>
<li>
<img src="/search.png" alt="Search">
</li>
<li>
<a href="#">Login</a>
</li>
<li>
<a href="#">Register</a>
</li>
</ul>
</div>
</header>
</body>
</html>
解决方案
添加position: relative;
到.primaryItems
课堂。然后添加left: 0;
到您的.primaryHeaderMenu ul li ul
班级。问题是position: absolute;
将其自身提升到 HTML DOM 中的第一个相对定位元素,然后它们相互重叠,因为它们具有相同位置的相同父级。W3Cschools 上有这方面的交互式示例。
推荐阅读
- sql - 在现有查询中添加记录数
- laravel - 如果 vue.js laravel 中的值为 null,则隐藏 div
- python - MS Azure - python http.server - 连接被拒绝
- postgresql - Strapi database.js / 多个数据库配置
- javascript - 如何在 Node 上的 Object.defineProperty 被覆盖后恢复到原始状态?
- python - 我不断收到 ValueError: Shapes (10, 1) and (10, 3) are incompatible 训练我的模型
- r - 在循环中结合使用 sink() 和 rmarkdown::render() 来检测计划的 .Rmd 报告的错误
- image - 您如何以编程方式创建图像,以便在 Unity 中与 2D 精灵一起使用?
- .net-core - OAuth 2.0、Swagger 和 DotNet 核心
- ios - WKWebView 内容不在 iOS 中居中