フレックスアイテムが伸びないようにする


100

サンプル:

div {
  display: flex;
  height: 200px;
  background: tan;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

2つの質問があります。

  1. なぜそれは基本的に起こるのspanですか?
  2. フレックスコンテナ内の他のフレックスアイテムに影響を与えずに伸びないようにするための正しいアプローチは何ですか?

回答:


174

スパンの高さを伸ばしたくないですか?
コンテナの高さ全体に伸びないように、1つまたは複数のフレックスアイテムに影響を与える可能性があります。

コンテナのすべてのフレックスアイテムに影響を与えるには、次を選択します。
に設定align-items: flex-start;する必要がdivあり、このコンテナのすべてのフレックスアイテムはコンテンツの高さを取得します。

div {
  align-items: flex-start;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
<div>
  <span>This is some text.</span>
</div>

単一のフレックスアイテムのみに影響を与えるには、次を選択します。
コンテナ上の単一のフレックスアイテムをストレッチ解除する場合はalign-self: flex-start;、このフレックスアイテムに設定する必要があります。コンテナの他のすべてのフレックスアイテムは影響を受けません。

div {
  display: flex;
  height: 200px;
  background: tan;
}
span.only {
  background: red;
  align-self:flex-start;
}
span {
    background:green;
}
<div>
  <span class="only">This is some text.</span>
  <span>This is more text.</span>
</div>

なぜこれが起こっているのspanですか?
プロパティのデフォルト値align-itemsstretchです。これが、spanの高さを塗りつぶす理由divです。

違いbaselineflex-start
フレックスアイテムにフォントサイズの異なるテキストがある場合は、最初の行のベースラインを使用してフレックスアイテムを垂直に配置できます。フォントサイズが小さいフレックスアイテムは、コンテナと上部のコンテナの間にいくらかのスペースがあります。flex-startフレックスを使用すると、アイテムはコンテナの上部に設定されます(スペースなし)。

div {
  align-items: baseline;
  background: tan;
  display: flex;
  height: 200px;
}
span {
  background: red;
}
span.fontsize {
  font-size:2em;
}
<div>
  <span class="fontsize">This is some text.</span>
  <span>This is more text.</span>
</div>

baselineとの違いについて詳しくは、flex-startこちらをご覧ください。
フレックススタートとベースラインの違いは何ですか?


1
回答ありがとうございますが、すべてのフレックスアイテムに影響します。そして質問:baselineflex-start値の違いは何ですか?それらの結果は同じようです。それらは状況によって異なる可能性がありますか?

素晴らしいようです!baselineとのflex-start値の違いも教えていただければ幸いです。


ヒント:水平方向に配置する場合は、次を使用してくださいalign-items: center;:)
RicardoZea20年

#Hack:要素を新しいdivでラップします。これにより、新しい親divがストレッチされ、要素は変更されません。
user19485 8520
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.