изображение плохо масштабируется

#html #css #image

#HTML #css #изображение

Вопрос:

У меня есть div файл, содержащий динамически генерируемые изображения, теперь каждое изображение имеет разные пропорции, теперь мое изображение не масштабируется в соответствии с пропорцией изображения.

Ожидаемый результат:

введите описание изображения здесь

Вот мое решение до сих пор

 .container {
  display: flex;
  justify-content: space-between;
}

.conatiner_box {
  position: relative;
  width: 300px;
  height: 150px;
  border: 1px solid;
  display: flex;
  -webkit-box-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  align-items: center;
  position: relative;
  border-left: 5px solid rgb(232, 159, 42);
  margin: 0px auto;
  overflow: hidden;
}

.image-box {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0px;
  top: 0px;
  bottom: 0px;
  right: 0px;
  transition: all 0.1s linear 0s;
}  
 <div class="container">
   <div class="conatiner_box">
      <img src="https://i.ibb.co/HP3tksz/image1.jpg" class="image-box">
   </div>
   <div class="conatiner_box">
      <img src="https://i.ibb.co/Jz9cW7W/image2.jpg" class="image-box">
   </div>
</div>  

Вот живая демонстрация jsfiddle

Что мне нужно сделать, чтобы решить эту проблему?

Комментарии:

1.Для абсолютных изображений «CSS-трюк» вы также должны использовать object-fit contain для изображения (в противном случае изображение растягивается на 100% по сравнению с относительной оболочкой). developer.mozilla.org/en-US/docs/Web/CSS/object-fit .

Ответ №1:

Если вы хотите, чтобы ваши изображения были отзывчивыми, вы должны установить:

 max-width:100%;
max-height: 100%;
  

Вместо width и height .

Также удалите абсолютную позицию, которая не была нужна

ДЕМОНСТРАЦИЯ:

 .container {
  display: flex;
  justify-content: space-between;
}

.conatiner_box {
  position: relative;
  width: 300px;
  height: 150px;
  border: 1px solid;
  display: flex;
  -webkit-box-pack: center;
  justify-content: center;
  -webkit-box-align: center;
  align-items: center;
  position: relative;
  border-left: 5px solid rgb(232, 159, 42);
  margin: 0px auto;
  overflow: hidden;
}

.image-box {
  max-width: 100%;
  max-height: 100%;
  /*position: absolute;
  left: 0px;
  top: 0px;
  bottom: 0px;
  right: 0px;*/
  transition: all 0.1s linear 0s;
}  
 <div class="container">
   <div class="conatiner_box">
      <img src="https://i.ibb.co/HP3tksz/image1.jpg" class="image-box">
   </div>
   <div class="conatiner_box">
      <img src="https://i.ibb.co/Jz9cW7W/image2.jpg" class="image-box">
   </div>
</div>  

Комментарии:

1. вау , о котором я только знал object-fit . Это что-то новое для меня! Спасибо.

2. Добро пожаловать, я думаю, на вопрос дан ответ. Используйте его хорошо!

Ответ №2:

Вы должны удалить position: absolute из .image-box и удалить display: flex; из .conatiner_box. Также изображение должно иметь ширину: 100%; и высоту: авто; Если вы хотите, чтобы все поля имели одинаковые размеры, вы должны затем определить ширину и высоту и использовать object: fit; Например, вы можете обрабатывать то же, что и фоновое изображение в CSS (но это не будет работать в Internet Explorer, проверьтеможно использовать).

Также вы должны стараться иметь изображения с аналогичным соотношением для лучшего пользовательского интерфейса.