CSS ではmin-content
および の値はどのように計算されますか?max-content
では、本質的次元とは何を意味するのでしょうか?
ベストアンサー1
注: このテキストの「幅」は CSS ではなく「論理的な幅」を指しますwidth
。つまり、height
言語の方向が垂直方向 (東アジア言語など) の場合や、フレックスボックスまたはグリッドの場合、値は CSS の にも有効です。およびmin-content
は、、、、、、、およびさらに多くのプロパティ (など)max-content
に有効な値です。width
height
min-width
min-height
max-width
max-height
flex-basis
箱の本質的な寸法は何ですか?
CSSサイジングレベル3では、本質的な次元 - の反対外在的。外在的ボックスの寸法は、そのボックスの親ボックスに基づいて計算されます。たとえばwidth: 80%
、外在的次元width
主題の は、それを含むボックスの によって決まるためですwidth
。
それとは対照的にwidth: min-content
、本質的なボックスの幅は、ボックス自体に含まれる内容の寸法に基づいて計算されます。
本質的な寸法はボックス自体のプロパティですが、外在寸法はボックスが文書内に配置され、これらの値を計算できるコンテキストでのみ使用できます。たとえば、CSSフロー(クラシックCSSレイアウトモード)では、おそらくご存知のように、親要素で定義されているheight: 20%
場合(つまり継承可能である場合)にのみ効果がありますheight
。これは、外在的計算できない寸法(外部値が利用できない場合、CSSはそれに相当する内部値にフォールバックします)。代わりに、height: min-content
常に計算可能です。本質的なこれはボックス自体に適用され、ドキュメント内でのボックスの配置 (またはボックスの不在) に関係なく常に同じになります。
min-content
との定義はmax-content
長年にわたって何度も変更されてきましたが、結果は常に同じままであり、理解するのは非常に簡単です。これらはもともと のキーワードとしてコミュニティによって要求されたものでwidth
、ボックスが である場合に計算された値はボックスの幅と一致しますfloat
。実際、これら 2 つのプロパティの定義はもともと の動作に基づいていましたがfloat
、現在は次のようにより一般的に定義されています。
min-content
https://www.w3.org/TR/css-sizing-3/#min-content
オーバーフローが発生しないボックスの最小サイズ。オーバーフローは、より大きなサイズを選択することで回避できます。
言い換えると、ボックスの内容がボックス自体からはみ出さない最小の幅。
実際、これを視覚化する良い方法は、 を使用することですfloat
。
/* the computed width of #red in this example
equals to specifying #red { width: min-content } */
#blue { width: 0px; }
#blue > #red { float: left; }
(GIFソース:http://jsfiddle.net/6srop4zu/)
上記のGIFでは、赤い箱の最小コンテンツ幅青いボックスの幅が0pxのときの赤いボックスの幅に等しい(GIF では 234 ピクセルですが、jsfiddle では異なる場合があります)。
ご覧のとおり、赤いボックスを小さくすると、単語がsupercalifragilisticexpialidocious
赤いボックスからあふれてしまいます。したがって、この場合は、min-content
水平方向に最も多くのスペースを占める特定の単語の幅が に等しくなります。
max-content
https://www.w3.org/TR/css-sizing-3/#max-content
利用可能なスペースが無限にある場合の、特定の軸におけるボックスの「理想的な」サイズ。通常、これは、ボックスがその軸内でその内容物に収まる最小のサイズです。つまり、オーバーフローを回避しながら、未充填スペースを最小限に抑えます。
/* the computed width of #red in this example
equals to specifying #red { width: max-content } */
#blue { width: 99999999999999999px; } /* ~infinite */
#blue > #red { float: left; }
(GIFソース:http://jsfiddle.net/nktsrzvg/)
上記のGIFでは、赤い箱の最大コンテンツ幅青いボックスの幅が無限大の場合、赤いボックスの幅に等しい(GIF では 386 ピクセルですが、jsfiddle では異なる場合があります)。
ここでは、赤いボックスは青いボックスの x 軸上の利用可能なスペースを最大限に活用していますが、無駄にしていません。コンテンツは関連する軸上で制限なく拡張でき、赤いボックスは最大拡張ポイントでそれらをラップします。
fit-content
、その他についてはどうでしょうかstretch
? これらのプロパティは現在再検討中であるため、安定していません (日付: 2018 年 7 月)。もう少し成熟したら (できればすぐに)、ここに追加される予定です。