Изображение с максимальной шириной или высотой самого изображения с сохраненным соотношением сторон, ограниченным размером окна

#html #css

#HTML #css

Вопрос:

Мне нужно изображение, которое сохранит свое соотношение сторон, будет максимальной шириной или высотой самого изображения, но не более высоты / ширины окна.

Вот пример codepen: https://codepen.io/anon/pen/GeQqOv

Это примеры пользовательских аватаров, и пользователь может загрузить его любого размера, но я хочу, чтобы большие аватары имели 100% размер изображения и не растягивались на больших экранах из-за маленького.

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

 img {
  width: 100%;
  height:auto;
  object-fit: contain;
   max-height: 100vh;
}
  

Ответ №1:

Если вам не нужно поддерживать старые браузеры, используйте object-fit значение contain , которое увеличивает или уменьшает размер изображения, чтобы заполнить поле, сохраняя его соотношение сторон.

 img {
  width: 100%;
  height:auto;
  object-fit: contain;
  max-height: 100vh;
}
  

могу ли я использовать

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

1. Спасибо, но маленькое изображение все еще растягивается

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

3. проблема в том, что это аватар пользователя, и пользователь может загрузить его любого размера, но я хочу, чтобы большие аватары имели 100% размер и не растягивались на больших экранах на маленькие: (

4. Аватар любого размера !!?? Странно. Я бы не хотел этого допускать. Ну что ж. Я полагаю, вы могли бы написать некоторый код для определения размера и применения различных стилей.

Ответ №2:

Это решение, которое не имеет только max-height: 100vh

 img {
  height:auto;
  width:auto;
  object-fit: contain;
  max-width:100%;
  max-height:100%;
  object-fit: contain; 
}