Адаптивное изображение, не заполняющее DIV при уменьшении области просмотра

У меня есть 2 столбца макета, в котором один столбец содержит изображение, а другой столбец содержит пространство для текста, кнопок и т. Д.

проблема

Проблема, с которой я столкнулся, связана со столбцом изображения. Когда столбец изображения масштабируется в больших окнах просмотра, он отлично работает и масштабируется точно так, как запланировано. Оба столбца настраиваются на одинаковую высоту, и все элементы масштабируются правильно. Тем не менее, когда окно становится меньше, изображение продолжает уменьшаться. Два столбца больше не являются четными, и фон столбца изображения начинает отображаться. Я думаю, что это происходит, потому что изображение пытается сохранить то же соотношение сторон.

умысел

Предполагается, что при уменьшении области просмотра соответствующие столбцы также уменьшаются, сохраняя одинаковое соотношение ширины, а высота двух столбцов всегда должна совпадать.

Испытанные / Неудачные Решения

  • height: 100% на img атрибут - это приводит к тому, что столбцы не масштабируются должным образом.
  • С использованием picture элемент вместо img тег
  • с помощью object-fit обложки и заполните на изображении.

Вот фрагмент кода и JSFiddle http://jsfiddle.net/CztS6/37/

.flex-container {
    width: 100%;
    min-height: 300px;
    margin: 0 auto;
    display: flex;
}
.full-width-four {
    width: calc(33.3333333333%);
    float: left;
    margin-left: 0;
    background: #dbdfe5;
    flex: 1;
}
.recruitment{
  display: block;
  height: auto;
  max-width: 100%;
  object-fit: cover;
  
}
.full-width-eight{
    width: calc(66.6666666667%);
    float: left;
    margin-left: 0;
    background: #b4bac0;
    flex: 2;
}
<div class="flex-container">
  <div class="full-width-four">
    <img class="recruitment" src="http://via.placeholder.com/570x415"> 
  </div>
  <div class="full-width-eight">Column 2</div>
</div>

1 ответ

Решение

Вот мое решение, это то, что вы ищете?

Я прокомментировал min-height: 300px; за flex-container

Я также добавил width:100%; к изображению

.flex-container {
    width: 100%;
    /* min-height: 300px; */
    margin: 0 auto;
    display: flex;
}
.full-width-four {
    width: calc(33.3333333333%);
    float: left;
    margin-left: 0;
    background: #dbdfe5;
    flex: 1;
}
.recruitment{
  display: block;
  height: auto;
  max-width: 100%;
  object-fit: cover;
  width:100%;
  
}
.full-width-eight{
    width: calc(66.6666666667%);
    float: left;
    margin-left: 0;
    background: #b4bac0;
    flex: 2;
}
<div class="flex-container">
  <div class="full-width-four">
    <img class="recruitment" src="http://via.placeholder.com/570x415"> 
  </div>
  <div class="full-width-eight">Column 2</div>
</div>

Другие вопросы по тегам