Здравствуйте. Похоже, это происходит из-за сложности вычисления пропорций при отсутствии начального размера "холста" для изображения. Если задать на самом изображении:
<img width="100" …>
— ваш код должен работать.
Как вариант, можно прописать в стилях:
img {
flex: 1 1 auto;
width: 100px;
}
Так мы зададим размер холста под изображение, а потом переопределим его через flex-basis.
NB закрывающй тег флекс-контейнера
</a>
— стоит дописать.