Navbar水平菜单定位帮助。非常基本的

时间:2015-05-11 12:50:48

标签: html css

对问题的基本问题道歉,只是创建一个下拉菜单,并且在边距和定位方面存在一些问题。

我将它的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">&#9660;</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">&#9660;</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放在太多的位置以尝试修复此问题,但没有一个正在工作

3 个答案:

答案 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">&#9660;</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">&#9660;</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>