編集:この質問に答えてから3年が経過しましたが、現在のソリューションでうまくいきますが、より現代的なソリューションが必要だと思います:)
1.フレックスボックス
これは、最も短く、最も柔軟です。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/を参照してください。これは、Javascript を使用してコンテンツを挿入する場合に当てはまります。
IE7 を気にしない場合は、単に star-hack プロパティを省略してください。マークアップを使用した実際の例は、http://jsfiddle.net/skip405/NfeVh/5/です。部分を追加しheader:after
て内容を正当化しただけです。
擬似要素で挿入される余分なスペースの問題を解決するために、親要素の を 0 に設定し、子要素の 14px にリセットするafter
トリックを実行できます。font-size
このトリックの実際の例は、http: //jsfiddle.net/skip405/NfeVh/326/で見ることができます。