min-contentとmax-contentはどのように機能しますか?質問する

min-contentとmax-contentはどのように機能しますか?質問する

CSS ではmin-contentおよび の値はどのように計算されますか?max-content

では、本質的次元とは何を意味するのでしょうか?

ベストアンサー1

注: このテキストの「幅」は CSS ではなく「論理的な幅」を指しますwidth。つまり、height言語の方向が垂直方向 (東アジア言語など) の場合や、フレックスボックスまたはグリッドの場合、値は CSS の にも有効です。およびmin-contentは、、、、、、、およびさらに多くのプロパティ (など)max-contentに有効な値です。widthheightmin-widthmin-heightmax-widthmax-heightflex-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 月)。もう少し成熟したら (できればすぐに)、ここに追加される予定です。

おすすめ記事