Как изменить размер изображений, чтобы заполнить строку с помощью css?

#html #css #flexbox

#HTML #css #flexbox

Вопрос:

У меня есть несколько изображений, которые я хочу показать с помощью flexbox. Но изображения оставляют пробел, если следующее изображение не помещается в ту же строку.

Неправильный вывод

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

Пример:

Желаемый результат

HTML:

 <div class="ImageContainer">
    <div class="ImageBlock">
        <img src="https://c4.wallpaperflare.com/wallpaper/246/739/689/digital-digital-art-artwork-illustration-abstract-hd-wallpaper-thumb.jpg"
            alt="">
    </div>
    <div class="ImageBlock">
        <img src="https://c4.wallpaperflare.com/wallpaper/410/867/750/vector-forest-sunset-forest-sunset-forest-wallpaper-thumb.jpg"
            alt="">
    </div>
    <div class="ImageBlock">
        <img src="https://c4.wallpaperflare.com/wallpaper/500/442/354/outrun-vaporwave-hd-wallpaper-thumb.jpg"
            alt="">
    </div>
    <div class="ImageBlock">
        <img src="https://c4.wallpaperflare.com/wallpaper/39/346/426/digital-art-men-city-futuristic-night-hd-wallpaper-thumb.jpg"
            alt="">
    </div>
</div>
 

CSS:

 .ImageContainer{
    margin:40px;
    display: flex;
    flex-wrap: wrap;
}

.ImageBlock{
    margin:10px;
}

.ImageBlock img{
    max-height: 250px;
}
 

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

1. .ImageBlock{ flex-grow:1; } ?

Ответ №1:

Вам нужно будет добавить flex-grow: 1; в .ImageBlock

Это заставит блок расширяться.

 .ImageBlock {
  margin: 10px;
  flex-grow: 1;
}
 

Затем вам нужно будет img заполнить блок с помощью width: 100%;

Если вы не хотите, чтобы изображение растягивалось из пропорций, вы можете использовать object-fit: cover; .

 .ImageBlock img {
  max-height: 250px;
  width: 100%;
  object-fit: cover;
}
 

Пример codepen: https://codepen.io/bj-rn-nyborg/pen/rNMVrVL

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

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

2. Это зависит от размера окна, попробуйте увеличить масштаб еще больше, и вы получите больше изображений в строке.

3. разрешение моего экрана составляет 1366×768, и он отображает только 2 изображения в строке 1 и только 1 изображение в строке 2,3,4. Есть ли способ отображать по крайней мере 2-3 изображения в строке для моего разрешения и изменять их позже в соответствии с ответом?

4. Да, прямо сейчас это зависит от исходного src изображений. Изображения, на которые вы ссылаетесь, имеют ширину 551 пикселей, поэтому они не могут поместиться 3 в одной строке при ширине экрана 1366 пикселей. Вы можете просто добавить стиль ширины к элементам: width: 25%; даст вам 4 элемента в ряд, width: 33.3333%; даст вам 3 элемента в ряд и так далее.

5. что я могу сделать для достижения этого результата: ibb.co/dmXkr5Q с моим разрешением, так как у большинства людей есть это разрешение