Flex-basis: Webkit/Blink игнорировать внутреннее соотношение сторон

С учетом гибкого контейнера

figure {
  display: flex;
  align-items: flex-start;
}

и изображение 300x300 с его гибким основанием, установленным на половине его внутренней ширины:

figure img {
  flex: 0 0 150px;
}

Chrome 41 и Safari 7 игнорируют соотношение сторон и отображают его как 150px x 300px:

enter image description here

Firefox 35, с другой стороны, сохраняет внутреннее соотношение сторон:

enter image description here

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>

Ответы

Ответ 1

В соответствии с редакцией проекта текущей спецификации Flexbox ни один из этих браузеров не делает это правильно.

Когда я увидел этот вопрос, размещенный здесь, я спросил об этом в списке рассылки www-стиля, и это обсуждение, которое оно предложило (через readable-email. орг):

Консенсус заключается в том, что строгая интерпретация текущего проекта предполагает, что размер изображения составляет 300 × 300 пикселей, поскольку минимальный размер содержимого элемента гибкости и элементов гибкости не должен уменьшаться ниже их минимального размера содержимого, если их минимальный размер -size имеет значение auto (значение по умолчанию и пример в вашем примере).

Даниэль Холберт (Flexbox разработчик в Firefox) продолжил обсуждение другого потока, в котором предложил, чтобы элементы с внутренним аспектом рациона разрешались сокращаться ниже их минимальный размер контента. Он утверждает:

размеры минимального содержимого на самом деле не являются полезной нижней границей для элементов flex с пропорциями. Эти элементы гибкости могут сокращаться (соблюдая их внутреннее соотношение сторон) ниже их минимального размера, без переполнения.

В любом случае, как я уже сказал, ответ на ваш вопрос заключается в том, что ни один браузер не делает это правильно (согласно текущей спецификации), но возможно, что спецификация изменится, чтобы обработать этот случай и способ, которым Firefox в настоящее время его выполняет будут считаться правильными в будущем.