Подтвердить что ты не робот

Масштабирование изображения CSS в соответствии с внутренним пространством не искажается

Есть ли способ с помощью CSS или иным образом сделать изображение вписывающимся в область. Допустим, у меня есть несколько изображений разных размеров, и я хочу, чтобы они все умещались в делении 150 на 100 пикселей. Я не хочу масштабировать изображения, хотя некоторые могут быть высокими, а другие узкими, я просто хочу, чтобы они вписывались в эту область, а остальные скрыты.

Я думал об использовании overflow:hidden, но он не скрыт в IE6.

Есть идеи?

4b9b3361

Ответ 1

Вы должны попробовать использовать это:

img{
  width: auto;
  max-width: 150px;
  height: auto;
  max-height: 100px;
}

Редактировать: похоже, что IE6 не поддерживает свойства max-width и max-height. Однако вы можете реализовать обходной путь, приведенный здесь: max-width, max-height для IE6

Выдержка (в случае, если связанная статья перестает работать):

img {
  max-height: 100px;
  max-width: 100px;
  width: expression(document.body.clientWidth > 150? '150px': 'auto');
  height: expression(document.body.clientHeight > 100? '100px': 'auto');
}

Ответ 2

Когда вы говорите "вписывайтесь в эту область", а остальное спрятано, я чувствую, что вы хотите, чтобы изображение вообще не уменьшалось и в основном обрезало лишнее.

Я мог бы интерпретировать, что вы ошибаетесь, но попробуйте это и посмотрите, создает ли он эффект, который вы ищете.

.img-holder {
  width: 150px;
  height: 150px;
  position: relative;
  overflow: hidden;
}
.img-holder img {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
}
<div class="img-holder">
  <img src="http://img.playit.pk/vi/dH6NIe7wm4I/mqdefault.jpg" />
</div>

Ответ 3

Это не будет работать в IE6 (в соответствии с требованиями OP), но для полноты вы можете добиться необходимого эффекта для новых браузеров с помощью CSS3 background-size:cover и установить изображение в виде фонового изображения в центре. Например:

div { 
  width:150px;
  height:100px;
  background-size:cover; 
  background-position:center center; 
  background-repeat:no-repeat; 
  background-image:url('somepic.jpg');
}

Ответ 4

Это сработало для меня:

img.perfect-fit {
    width: auto;
    height: auto;
    min-width: 100%;
    min-height: 100%;
}

Он пытается "идеально подогнать" контейнер, растягиваясь так, чтобы соответствовать границам, сохраняя пропорции изображения. Не проверял это с IE6.

JSFiddle: http://jsfiddle.net/4zudggou/

Ответ 5

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

Так как ответы были опубликованы, нам подобрано соответствие CSS-свойств объекта. Он делает именно то, что когда-то было запрошено в вопросе.

Для справки: https://www.w3schools.com/css/css3_object-fit.asp