#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 с моим разрешением, так как у большинства людей есть это разрешение