Ваше изображение выглядит размытым, поскольку его соотношение сторон не поддерживается. Один из способов сохранить соотношение сторон при указании высоты и ширины изображения - использовать object-fit: cover
. Обратите внимание, что при явном указании его высоты и ширины при использовании object-fit: cover
изображение будет обрезано при необходимости и будет отцентрировано. Хорошая ссылка, которая показывает простую демонстрацию object-fit
, доступна здесь .
Даже при использовании object-fit: cover
для поддержания соотношения сторон изображения, когда ширина области просмотра слишком мала, Вырезанная часть изображения может быть слишком большой, чтобы изображение больше не передавало полезную информацию. Из-за этого нам придется корректировать расположение изображений. Поскольку у вас есть нерегулярный шаблон размещения элементов сетки, я предлагаю вам отображать только одно изображение в одной строке на экранах меньшего размера. Вы можете сделать это, изменив свойство display
вашего wrapper
на flex
, как показано ниже.
Однако, , если у вас есть регулярный шаблон размещения элементов сетки (например, 3 элементов в строке сетки и n-й элемент всегда занимает 2 столбца), вы можете попробовать прочитать эту полезную ссылку из CSS Трюки , чтобы вообще не использовать media-query
.
Вот простой пример это устанавливает display
в flex
, таким образом, показывая только один элемент в строке, когда размеры экрана меньше или равны 800px. Обратите внимание, как object-fit: cover
заставляет изображение заполнять его размер, но при этом сохраняет пропорции (вы, конечно, можете настроить этот параметр по своему усмотрению).
* {
box-sizing: border-box;
}
body {
padding: 0px 20px;
}
.wrapper {
display: grid;
grid-template-columns: 3fr 2fr 3fr;
grid-auto-rows: 100px;
column-gap: 10px;
row-gap: 10px;
}
.wrapper>div {
border: 1px solid #121212;
border-radius: 5px;
}
.wrapper>div img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
border-radius: inherit;
}
.bed {
grid-column: 1 / 2;
grid-row: 1 / 3;
}
.pillow {
grid-column: 2 / 3;
grid-row: 1 / 3;
}
.kitchen {
grid-column: 3 / 4;
grid-row: 2 / 4;
}
.living-room {
grid-column: 1 / 3;
grid-row: 3 / 6;
}
.sofa {
grid-column: 3 / 4;
grid-row: 4 / 6;
}
@media (max-width: 800px) {
.wrapper {
display: flex;
flex-direction: column;
}
.wrapper>div {
padding: 0px 20px;
margin: 10px 0px;
}
.wrapper>div img {
max-width: 100%;
max-height: 80vh;
}
}
<div class="wrapper">
<div class="bed">
<img src="https://image.shutterstock.com/image-vector/default-ui-image-placeholder-wireframes-260nw-1037719192.jpg" alt="">
</div>
<div class="pillow">
<img src="https://image.shutterstock.com/image-vector/default-ui-image-placeholder-wireframes-260nw-1037719192.jpg" alt="">
</div>
<div class="kitchen">
<img src="https://image.shutterstock.com/image-vector/default-ui-image-placeholder-wireframes-260nw-1037719192.jpg" alt="">
</div>
<div class="living-room">
<img src="https://image.shutterstock.com/image-vector/default-ui-image-placeholder-wireframes-260nw-1037719192.jpg" alt="">
</div>
<div class="sofa">
<img src="https://image.shutterstock.com/image-vector/default-ui-image-placeholder-wireframes-260nw-1037719192.jpg" alt="">
</div>
</div>