html - CSS 下拉菜单与内容对齐
问题描述
我目前正在尝试制作一个(响应式)导航栏,虽然我已经对它进行了很多故障排除,但我无法找到通过它的方式。:(
我目前有2个问题。1)在宽屏中,我想将下拉菜单置于其“按钮”标题下。2)在智能手机/平板电脑屏幕上,我想制作下拉菜单,当出现时,按下其余的“按钮”标题而不是覆盖它们。
关于 1,我尝试更改下拉列表的属性right
和left
属性,但无论我position
对下拉列表和父元素所做的更改,它都只会粘在屏幕的一侧。
关于 2,我搞砸了,position
但我仍然无法让它像静态一样工作。
理想情况下,我只想使用 HTML 和 CSS。
这是一个演示:https ://jsfiddle.net/SteliosKts/01o6cem5/10/
PS.如果是转帖,很抱歉,虽然我已经检查了大部分相关线程,但我无法解决我的问题
解决方案
你需要:
- 从.
position:absolute;
_.dropdownItem:hover .dropdownList
- 更改
display: block;
为display: inline-block;
in.dropdownList
。 - 删除
max-height: 55px
_li:nth-child(n + 2)
- 添加
flex-basis: 30px;
用于移动视图。
html,
body {
font-size: 100%;
margin: 0px;
padding: 0px;
height: 100vh;
width: 100vw;
align-content: center;
text-align: center;
overflow-y: auto;
}
* {
box-sizing: border-box;
}
/*------------Top Header & Logo------------*/
#background_Header {
display: inline-block;
background-color: #9a999b;
width: 350px;
height: 100px;
}
#vertical_top_header_placeHolder {
float: left;
background-color: #9a999b;
width: 100%;
height: 45px;
position: absolute;
}
/*------------------------------------------*/
/*-------------------Navgiation Bar---------------*/
ul {
list-style-type: none;
display: flex;
justify-content: center;
/*border: 1px solid black;*/
padding-left: 0px;
}
li {
/* required for logo positioned in center */
flex-basis: 90px;
padding-top: 10px;
padding-right: 0px;
/*border: 1px solid black;*/
}
li a:hover {
background-color: #f1f1f1
}
li:first-child,
li:nth-child(n + 5) {
order: 3;
}
li:first-child {
flex-basis: auto;
z-index: 1;
}
li:nth-child(n + 2) {
padding-top: 65px;
}
li:nth-child(6) {
padding-top: 55px;
}
.dropdownItem:hover .dropdownList {
display: inline-block;
}
.dropdownButton {
display: inline-block;
text-align: center;
text-decoration: none;
color: black;
}
.dropdownList {
display: none;
position: relative;
background-color: #d6d6d6;
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
z-index: 1;
}
.dropdownList a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
/*---------------------------------------------------*/
/*---------------Smartphone Header Style---------------*/
@media only screen and (max-width: 600px) {
li:first-child {
background-color: #9a999b;
}
li {
flex-basis: 30px;
}
#vertical_top_header_placeHolder {
display: none;
}
}
/*-----------------------------------------------------*/
/*---------------Vertical Navigation Style---------------*/
@media only screen and (max-width: 900px) {
ul {
flex-direction: column;
}
.dropdownItem {}
.dropdownButton {}
.dropdownList {
margin: 0 auto;
width: 100%;
}
li {
flex-basis: 30px;
}
li:first-child,
li:nth-child(n + 5) {
order: 0;
}
li:nth-child(n + 2) {
padding-top: 10px;
}
}
/*--------------------------------------------------------*/
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700&subset=latin,greek" rel="stylesheet" type="text/css" />
<link href="http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600&subset=latin,greek-ext,greek" rel="stylesheet" type="text/css" />
</head>
<body>
<!--<div id="vertical_Conteiner">-->
<div id="vertical_top_header_placeHolder"></div>
<nav>
<ul>
<li>
<div id="background_Header">
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 1
</a>
<div class="dropdownList">
<a href="#">T1I1</a>
<a href="#">T1I2</a>
<a href="#">T1I3</a>
<a href="#">T1I4</a>
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 2
</a>
<div class="dropdownList">
<a href="#">T2I1</a>
<a href="#">T2I2</a>
<a href="#">T2I3</a>
<a href="#">T2I4</a>
<a href="#">T2I5</a>
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 3
</a>
<div class="dropdownList">
<a href="#">T3I1</a>
<a href="#">T3I2</a>
<a href="#">T3I3</a>
<a href="#">T3I4</a>
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 4
</a>
<div class="dropdownList">
<a href="#">T4I1</a>
<a href="#">T4I2</a>
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 5 BigWord
</a>
<div class="dropdownList">
<a href="#">T5I1</a>
<a href="#">T5I2</a>
</div>
</li>
<li class="dropdownItem">
<a class="dropdownButton" href="javascript:void(0)">
Team 6
</a>
<div class="dropdownList">
<a href="#">T6I1</a>
<a href="#">Team6_BigItem2</a>
<a href="#">T6I3</a>
<a href="#">T6I4</a>
<a href="#">T6I5</a>
</div>
</li>
</ul>
</nav>
<article>
<div>
</div>
</article>
</body>
</html>
推荐阅读
- asp.net - 使用 GroupBy Id 选择 ASP NET CORE 实体框架
- cordova - 减小 Cordova 应用程序的大小
- javascript - 如何在javascript中检查通知是否已关闭
- bash - GNU Parallel 与多个文件的 shellcheck
- r - 无法从 R 中的 XML 获取值
- node.js - 为什么 Herky 每天都会重置我的文件“data.json”?
- java - 对映射到 java.lang.Class 的列的查询不受支持的鉴别器类型 null
- javascript - Wordpress Javascript 模态显示不关闭
- python - pd.notnull 奇怪的空值检查行为
- wordpress - dokan 插件与 wpbakery 页面构建器(Visual Composer)冲突