私はあなたが優雅な聖なるウバー・グレイルを探していると思います。私は間違っているかもしれないが、私はそれがCSSだけでは可能ではないと思う。最大幅を持つような最大マージンのようなものはないからです。そしてJS(jQueryなど)を使用すると、JSがページが読み込まれて準備ができてから幅の値の計算が始まるまで待機する必要があるため、一種のジャンプがあります。
少しでもやりたいと思えば。私はウィンドウサイズと結合されたナビゲーション全体の最大幅を定義し、最新のブラウザにCSSフレックスを使用することをお勧めします。あなたがmodernizr.comを使用している場合は、IE8用のCSSでブランチし、代わりにdisplay:table、table-row、table-cellを使用することができます。 IE7の場合は、floatを使用します。
最新のブラウザでは表を使用しないのはなぜですか?私は同じように見えるかもしれませんが、要素間のマージンゲインはフレックスとテーブルで異なります。フレックスの要素間のギャップは絶対に(賢明なピクセルを意味する)と同じですが、彼らはテーブルでは比較的同じです(広いテーブルのセルが狭いものより多くのスペースを得るという意味)
table
+--------------------------------+---------+
| wide content in here | short |
+--------------------------------+---------+
6px 6px 2px 2px
flex
+----------------------------+-------------+
| wide content in here | short |
+----------------------------+-------------+
4px 4px 4px 4px
Upvoted 'ディスプレイ用:テーブル、table-row、table-cell' - 個人的には、これらのCSS属性を使用する代わりに(テーブル自体を使用する以外の)実行可能な選択肢はありません – Mikey
display:table、table-row、table-cellをテキストアライメント、垂直アライメント、およびさまざまなパディングを使用して、われわれが望む柔軟性とレイアウトを実現しました。私は確かにあなたがこの挑戦に直面している場合、実装上のこのメソッドの2番目:)、私はそれを試してみると、それは簡単だった。しかし、このメソッドがヘッダー(通常はボタン/入力に含まれる1行のテキストからなる)よりも複雑なレイアウトに使用できるかどうかはわかりません。 –
最大幅と幅:100%を組み合わせて使用することもできます。 –