<div>
のコンテナがありますdisplay: flex
。このコンテナには子 が存在します<a>
。
子要素を「インライン」で表示するにはどうすればよいですか?
具体的には、子の幅をそのコンテンツによって決定し、親の幅まで拡張しないようにするにはどうすればよいでしょうか。
私が試したこと:
子要素を に設定しましたdisplay: inline-flex
が、それでも幅全体が占有されてしまいました。他のすべての表示プロパティも試してみましたが、何も効果がありませんでした。
例:
.container {
background: red;
height: 200px;
flex-direction: column;
padding: 10px;
display: flex;
}
a {
display: inline-flex;
padding: 10px 40px;
background: pink;
}
<div class="container">
<a href="#">Test</a>
</div>
ベストアンサー1
align-items: flex-start
コンテナまたはalign-self: flex-start
フレックス アイテムで使用します。
は必要ありませんdisplay: inline-flex
。
フレックス コンテナーの初期設定は ですalign-items: stretch
。つまり、フレックス アイテムは交差軸に沿ってコンテナーの全長をカバーするように拡張されます。
プロパティalign-self
は と同じ動作をしますalign-items
が、 はフレックス アイテムalign-self
に適用され、 はフレックス コンテナーに適用されます。align-items
デフォルトでは、align-self
の値を継承しますalign-items
。
コンテナが であるためflex-direction: column
、交差軸は水平であり、align-items: stretch
子要素の幅を可能な限り拡張しています。 (設定が が機能しないcolumn
理由でもあります。)display: inline-flex
align-items: flex-start
コンテナー (すべてのフレックス アイテムに継承されます) またはalign-self: flex-start
アイテム (単一のアイテムに限定されます) を使用してデフォルトをオーバーライドできます。
交差軸に沿ったフレックス アライメントの詳細については、こちらをご覧ください。
メイン軸に沿ったフレックス アライメントの詳細については、こちらをご覧ください。