2013-04-17 18 views
24

私は、画面サイズが許せば、2つのボックスが隣り合っていて、そうでない場合は互いの下にあるような反応的なレイアウトを作成しようとしています。箱がお互いの下にある場合、私は彼らが親に中心を置くようにしたいと思います。私は、問題を示すためにjsfiddleを設定している:なぜ、max-widthはmin-widthを上書きしませんか?

http://jsfiddle.net/leongersen/KsU23/

width: 50%; 
min-width: 350px; 
max-width: 100%; 

が350px以下に「結果」ペインのサイズを変更してください。要素は親要素と重なります。

私の質問:

なぜそれが最小幅の後に来るにもかかわらず、光栄指定された最大幅ではないでしょうか?

もちろん、私はメディアクエリを使用することができますが、なぜこれが発生するのか知りたいのですが。ためCSS standards

+0

問題は表示されません。彼らは50%になります、もし私がそれを広げると、彼らは50%に保ちます、私はそれを700pxより小さくすると、350pxの最小幅を保ち、2番目の行が新しい行に行きます。あなたは何を期待していますか? –

+0

赤いボックスは、350pxより小さくなると親要素と重なっています。 – Lg102

+0

@FranciscoZarabozo - Lg102は、親のサイズが子要素の最小幅の合計よりも小さいときに100%の最大幅を引き継ぐと思われます。一種の助言分幅可能であれば – CodeMonkey

答えて

29

以下のアルゴリズムは、2つのプロパティは「幅」プロパティの 使用される値に影響を与える方法について説明:

  1. 仮の使用幅を算出する(なし'min-width'、 'max-width')を計算します。
  2. 仮の使用幅が 'max-width'より大きい場合は、上記のルールが再度適用されますが、今回は 'max-width'の計算値を 'width'の計算値として を使用して適用します。
  3. 結果の幅が 'min-width'より小さい場合は、 のルールが再度適用されますが、今回は 'min-width'の値を 'width'の計算値の として使用します。

このように、最小幅は常に「勝」します。特定のCSSルール内には、とにかく優先順位はありません。すべての値がアトミックに適用されます。優先順位は、異なるルールがすべて同じエレメントに適用され、さらにファイル順序が考慮される前に特定のルールに基づいている場合にのみ発生します。

+0

優先順位は、*同じルール*が要素に複数回適用された場合にのみ発生します。つまり、.foo {bar:fizz;バー:バズ; } '後者の定義が優先されます。この例では、 'min-width'と' max-width'は異なるルールなので、優先順位は入っていません。 – zzzzBov

+0

これは本当に優先されません。 *宣言*が*ルール*内で複製されるとき、それは単に順次構文解析の結果として同じ値を上書きしたものに過ぎません。結果として得られるルール(セレクタと宣言のセット)は、セレクタの特異性に基づいて優先順位を持つことができます.2つのルールが同じ場合、CSSの「カスケード」効果が作用し、後者の定義が考慮されますより具体的。 –

+0

私のポイントはあなたの記事が「同じ要素に同じルールが適用されているときのみ、優先順位は同じルールが適用されたときに優先ルールが適用される」ということです。 – zzzzBov

関連する問題