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

CSS List Navigation: Align All Items Left, but Last Item Right

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

Page 1    Page 2    Page 3    My Account

我需要'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>

我在最后一个列表项中添加了一个 float:right,最初看起来不错,直到我将屏幕缩小了一点。但随后它迫使前三项向下一点,所以 'My Account' 仍然对齐,但比其他三项高一点。像这样:

                                       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;
}

最好的方法是 divide 整个 div 分成相等的部分,前 3 项使用 text-align: center;,然后text-align: right到最后一个。不要使用 float:leftfloat:right,因为它会破坏网站的响应特性。

这是使用 css 对齐 属性、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