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

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

サンプル:

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

質問が2つあります。

  1. 基本的になぜそれが起こるのでしょうかspan?
  2. フレックス コンテナー内の他のフレックス アイテムに影響を与えずに伸縮を防ぐための適切な方法は何ですか?

ベストアンサー1

スパンの高さを伸ばしたくないですか?
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>

単一のフレックスアイテムのみに影響を与えるには、以下を選択します。
コンテナ上の 1 つのフレックス アイテムを伸縮解除したい場合は、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-itemsは です。これがの高さを埋めるstretch理由です。spandiv

baselineとの違いは何flex-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以下をご覧ください。
flex-start と baseline の違いは何ですか?

おすすめ記事