对问题的基本问题道歉,只是创建一个下拉菜单,并且在边距和定位方面存在一些问题。
我将它的div设置为85%,但我希望它在页面中居中, 然后列表项目位于中间位置,所以它整齐但不能得到它。
<div class="menu-wrap">
<nav class="menu">
<ul class="clearfix">
<li><a href="#">Home</a></li>
<li><a href="#">Second Page</a></li>
<li><a href="#">Third Page<span class="arrow">▼</span></a>
<ul class="sub-menu">
<li><a href="#">Dropdown One</a></li>
<li><a href="#">Dropdown Two</a></li>
</ul>
</li>
<li><a href="#">Fourth Page</a></li>
<li><a href="#">Fifth Page<span class="arrow">▼</span></a>
<ul class="sub-menu">
<li><a href="#">Dropdown 1</a></li>
<li><a href="#">Dropdown Item 2</a></li>
<li><a href="#">Dropdown 3</a></li>
<li><a href="#">Dropdown 4</a></li>
</ul>
</li>
</ul>
</nav>
CSS:
.clearfix:after {
display:block;
clear:both;
}
.menu-wrap ul {
margin:0px;
padding:0px;
}
.menu-wrap {
width:80%;
background: #85D2CD;
display: inline-block;
margin: auto;
}
.menu {
width:100%;
margin:0px auto;
}
.menu li {
margin:0px;
list-style:none;
}
.menu a {
transition:all linear 0.15s;
color:#FFF;
}
.menu > ul > li {
float:left;
display:inline-block;
position:relative;
font-size:19px;
}
.menu > ul > li > a {
padding:10px 30px;
display:inline-block;
text-shadow:0px 1px 0px rgba(0,0,0,0.4);
text-decoration:none;
}
.menu > ul > li:hover > a { /* Hover background color */
background:#5D9390;
}
.menu li:hover .sub-menu {
opacity:1;
}
.sub-menu {
width: 100%;
padding:5px 0px;
position:absolute; /* Need this so menu height doesnt extend to dropdown size*/
top:100%;
left:0px;
z-index:-1;
opacity:0;
transition:opacity linear 0.15s;
background:#6D9E9B;
}
.sub-menu li {
display:block;
font-size:16px;
}
.sub-menu li a {
padding:10px 30px;
display:block;
text-decoration:none;
}
.sub-menu li a:hover {
background:#5D9390;
}
我认为这是唯一需要的相关代码,我有点失去理智,并将margin auto放在太多的位置以尝试修复此问题,但没有一个正在工作
答案 0 :(得分:1)
首先改变
.menu-wrap {
width: 80%;
background: #85D2CD;
display: block;
margin: 0 auto;
overflow: hidden;
}
要使菜单项居中,请将ul样式更改为
ul.sub-menu {
text-align: center;
}
这应该让事情得到整理并在中间对齐。
答案 1 :(得分:0)
如果你知道包装div的宽度,你可以这样做:
.menu-wrap{
left: 10%;
position: relative;
}
如果你摆脱float:left
,可以将其添加到菜单中,使菜单居中:
.menu {
text-align: center;
}
JsFiddle:http://jsfiddle.net/d8sstx6t/2/
答案 2 :(得分:0)
如果您不知道内容的宽度和高度,可以使用display:table;
.clearfix:after {
display:block;
clear:both;
}
.menu-wrap ul {
margin:0px;
padding:0px;
}
.menu-wrap {
width:80%;
background: #85D2CD;
display: table;
margin: 0 auto;
}
.menu {
display: table;
margin:0 auto;
}
.menu li {
margin:0px;
list-style:none;
}
.menu a {
transition:all linear 0.15s;
color:#FFF;
}
.menu > ul > li {
float:left;
display:inline-block;
position:relative;
font-size:19px;
}
.menu > ul > li > a {
padding:10px 30px;
display:inline-block;
text-shadow:0px 1px 0px rgba(0,0,0,0.4);
text-decoration:none;
}
<div class="menu-wrap">
<nav class="menu">
<ul class="clearfix">
<li><a href="#">Home</a></li>
<li><a href="#">Second Page</a></li>
<li><a href="#">Third Page<span class="arrow">▼</span></a>
<ul class="sub-menu">
<li><a href="#">Dropdown One</a></li>
<li><a href="#">Dropdown Two</a></li>
</ul>
</li>
<li><a href="#">Fourth Page</a></li>
<li><a href="#">Fifth Page<span class="arrow">▼</span></a>
<ul class="sub-menu">
<li><a href="#">Dropdown 1</a></li>
<li><a href="#">Dropdown Item 2</a></li>
<li><a href="#">Dropdown 3</a></li>
<li><a href="#">Dropdown 4</a></li>
</ul>
</li>
</ul>
</nav>