Адаптивное изображение, не заполняющее 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>