编辑:自从我回答了这个问题以来已经过去了3年,我想需要一个更现代的解决方案,尽管当前的解决方案是可行的:)
1. Flexbox
到目前为止,它是最短,最灵活的。应用于display: flex;
父容器并通过以下方式调整其子容器的位置justify-content: space-between;
:
.header {
display: flex;
justify-content: space-between;
}
可以在这里在线看到-http://jsfiddle.net/skip405/NfeVh/1073/
但是请注意,flexbox支持是IE10和更高版本。如果需要支持IE 9或更早版本,请使用以下解决方案:
2.您可以在text-align: justify
此处使用该技术。
.header {
background: #ccc;
text-align: justify;
/* ie 7*/
*width: 100%;
*-ms-text-justify: distribute-all-lines;
*text-justify: distribute-all-lines;
}
.header:after{
content: '';
display: inline-block;
width: 100%;
height: 0;
font-size:0;
line-height:0;
}
h1 {
display: inline-block;
margin-top: 0.321em;
/* ie 7*/
*display: inline;
*zoom: 1;
*text-align: left;
}
.nav {
display: inline-block;
vertical-align: baseline;
/* ie 7*/
*display: inline;
*zoom:1;
*text-align: right;
}
可以在这里看到工作示例:http : //jsfiddle.net/skip405/NfeVh/4/。此代码在IE7及更高版本中有效
如果HTML中的内联块元素未用空格分隔,则此解决方案将不起作用-请参见示例http://jsfiddle.net/NfeVh/1408/。当您使用Java脚本插入内容时,可能是这种情况。
如果我们不在乎IE7,则只需省略star-hack属性。使用标记的工作示例在此处-http://jsfiddle.net/skip405/NfeVh/5/。我只是添加了header:after
一部分并证明了内容的合理性。
为了解决after
伪元素插入的额外空间的问题,可以做一个技巧,将font-size
父元素设置为0,然后将子元素重新设置为14px。可以在这里看到此技巧的有效示例:http : //jsfiddle.net/skip405/NfeVh/326/