CSS列表导航:将所有项目左对齐,但最后一项对齐

时间:2015-06-17 13:24:07

标签: css3 navigation

我有一个简单的列表驱动导航,如下所示:

Page 1    Page 2    Page 3    My Account

我需要'我的帐户'向右浮动:

Page 1    Page 2    Page 3                                                      My Account

以下是清单:

<nav class="nav">
    <ul class="menu">
        <li>Page 1</li>
        <li>Page 2</li>
        <li>Page 3</li>
        <li>My Account</li>
    </ul>
</nav>

我添加了一个浮动:直到最后一个列表项,这看起来很棒,直到我将屏幕缩小了一点。但后来它迫使前三项下降,所以“我的账户”仍然正确对齐,但坐起来比其他三项高一点。像这样:

                                       My Account
Page 1    Page 2    Page 3    

编辑后:

实际列表比我上面发布的更复杂。它有下拉和大量的造型。这是CSS:

.nav, .menu {
    height: 54px;
}

.nav {
    background: #004F9D;
    clear: both;
    display: block;
    position: relative;
}

.nav ul ul {
    display: none;
}

.nav ul li:hover > ul {
    display: block;
}

.nav ul ul {
    background: white;
    padding: 0;
    position: absolute; 
    top: 100%;
    z-index:1000;
    background-color: #ffffff;
    border: 1px solid #cccccc;
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 4px;
    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
    background-clip: padding-box;
    min-width: 160px;
    font-size: 14px;
}

.nav ul ul li {
    float: none; 
    position: relative;
}

.nav ul ul li a {
    color: black;
}   

.nav ul ul li a:hover {
    background: #428BCA;
}

.menu {
    clear: both;
    display: block;
    overflow: hidden;
}

.menu li {
    clear: none;
    display: block;
    float: left;
    padding: 10px 0;
}

.menu li img {
    padding-right:10px;
}

.menu li:hover {
    background-color: #00aedd;
}

.menu a, .menu span {
    background-repeat: no-repeat;
    clear: both;
    display: block;
    color: #fff;
    font-size: 14px;
    height: 34px;
    line-height: 35px;
    overflow: hidden;
    text-decoration: none;
}

.menu a {
    padding-left: 15px;
    padding-right: 15px;
}

.menu span {
    padding-right: 15px;
}

2 个答案:

答案 0 :(得分:1)

这样做的最好方法是将整个div分成相等的部分,并对前3个项使用text-align: center;,对最后一个使用text-align: right。不要使用float:leftfloat:right,因为它会混淆网站的响应性。

答案 1 :(得分:1)

这是使用css alignment属性flexbox的解决方案。它比使用浮动更清洁,因为它可以保存文档流中的所有内容。请注意,它支持IE浏览器9及更高版本

.menu {
    display: -webkit-flex;
    display: -ms-flex;
    display: flex;
}

.menu li {
    display: inline-block;
    list-style: none;
}

.menu li:not(:last-of-type) {
  margin: 0 5px;
}

.menu li:last-of-type {
    margin-left: auto;
}

JSFiddle