私はコンテナ<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>
コンテナには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
は子要素の幅をできるだけ拡大しています。
コンテナのalign-items: flex-start
(すべてのflexアイテムに継承される)またはアイテムのalign-self: flex-start
(単一のアイテムに限定されている)を使用してデフォルトをオーバーライドできます。
交差軸に沿ったフレックスアライメントの詳細については、こちらをご覧ください。
主軸に沿ったフレックスアライメントの詳細については、こちらをご覧ください。