divにflex-basis:autoが設定されている場合、divは内容に合わせて垂直方向に展開されます。CSSフレックスボックス行をイメージで水平方向に自動的にサイズ変更する方法
HTML:
<div class="parent">
<div class="image">
<img src="http://placebacon.net/400/103">
</div>
<div class="text">
-- Removed for readability --
</div>
</div>
SCSS:
.parent {
position:absolute;
top:0px;
left:0px;
right:0px;
bottom:0px;
display:flex;
flex-direction:column;
.image {
flex-basis:auto;
flex-grow:0;
flex-shrink:0;
img {
width:100%;
height:auto;
}
}
.text {
flex-basis:0px;
flex-grow:1;
flex-shrink:1;
overflow-y:scroll;
}
}
しかし、これは水平に動作しません。
を.parent {
position:absolute;
top:0px;
left:0px;
right:0px;
bottom:0px;
display:flex;
flex-direction:row;
.image {
flex-basis:auto;
flex-grow:0;
flex-shrink:0;
img {
height:100%;
width:auto;
}
}
.text {
flex-basis:0px;
flex-grow:1;
flex-shrink:1;
overflow-y:scroll;
}
}
親の高さを変更すると、画像のサイズが変更されて縦横比が維持されます。しかし、フレックスボックスは変換前の画像のサイズを保持します。
予想される動作を得るために設定する必要のあるCSSプロパティはありますか?
大変ありがとうございました。一日中、私の髪を払い出しました。このクォークがどこに記述されているのかわかる仕様はありますか? – bluelightzero
@bluelightzero私が言うことができる唯一の仕様はその高さです:100%;直接親がCSSで使用可能な高さを設定する必要があります。それ以外の場合は何もしません。テーブルとflex要素には、時には部分的に動作する、これに関する面白い動作があります。ここのケースは明らかです;) –