サンプル:
div {
display: flex;
height: 200px;
background: tan;
}
span {
background: red;
}
<div>
<span>This is some text.</span>
</div>
質問が2つあります。
- 基本的になぜそれが起こるのでしょうか
span
? - フレックス コンテナー内の他のフレックス アイテムに影響を与えずに伸縮を防ぐための適切な方法は何ですか?
ベストアンサー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
理由です。span
div
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 の違いは何ですか?