С учетом гибкого контейнера
figure {
display: flex;
align-items: flex-start;
}
и изображение 300x300 с его гибким основанием, установленным на половине его внутренней ширины:
figure img {
flex: 0 0 150px;
}
Chrome 41 и Safari 7 игнорируют соотношение сторон и отображают его как 150px x 300px:
Firefox 35, с другой стороны, сохраняет внутреннее соотношение сторон:
figure {
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: start;
-moz-box-align: start;
box-align: start;
-webkit-align-items: flex-start;
-moz-align-items: flex-start;
-ms-align-items: flex-start;
-o-align-items: flex-start;
align-items: flex-start;
-ms-flex-align: start;
width: 100%;
border: 1px solid black;
}
figure img {
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
-webkit-flex: 0 0 150px;
-moz-flex: 0 0 150px;
-ms-flex: 0 0 150px;
flex: 0 0 150px;
}
figure figcaption {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
-webkit-flex: 1 1 auto;
-moz-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
<figure>
<img src="//placekitten.com/g/300/300" />
<figcaption>
I'm the caption
</figcaption>
</figure>