Вёрстка галереи фото на flex по заданному html-шаблону

Как сверстать галерею фото на flex, используя только CSS по заданному html-шаблону, который нельзя менять?

Задача:

  1. Первый вариант строго по 4 фото в ряд, но чтобы не зависело от ширины экрана. То есть при ширине 1000px ширина фото должна быть 250px c отступами и рамками, при ширине 1200 — 300 на каждое фото, тогда их будет по 4 в ряд и т. д.

  2. Второй вариант с переменным количеством в ряду (это зависит от ширины экрана), но с фиксированным размером рамки 150px на 150px.

  3. Фото разных (любых) размеров и пропорций, добавив рамку чтобы смотрелось ровно.

  4. Html-разметка для обоих вариантов должна быть одинаковой.

Решение необходимо сделать на основе этого шаблона:

<style>.wrap div  {border: 1px solid grey;padding:3px}</style>
<div class="wrap">
<div><img src="01.jpg" alt="Изображение 01"></div>
<div><img src="02.jpg" alt="Изображение 02"></div>
<div><img src="03.jpg" alt="Изображение 03"></div>
<div><img src="04.jpg" alt="Изображение 04"></div>
<div><img src="05.jpg" alt="Изображение 05"></div>
<div><img src="06.jpg" alt="Изображение 06"></div>
<div class="seven"><img src="07.jpg" alt="Изображение 07"></div>
<div><img src="08.jpg" alt="Изображение 08"></div>
</div>

Ответы (1 шт):

Автор решения: Rijen

Не совсем понятно каким должны быть последующие ряды.

Для того чтобы разбить все изображение по рядам - используй flex-wrap

Чтобы красиво вписать изображение в квадрат - fit-object

Чтобы первые 4 изображение были одним стилем, а остальные другим - используй :nth-child

.wrap{
  display:flex;
  flex-wrap:wrap;
  width:100%;
   justify-content:space-around; 
}
.wrap>div>img{
  width:100%;
  height:100%;
  object-fit:cover;
  
}
.wrap>div{
  border-radius:15px;
  margin:5px;
  overflow:hidden;
  
}
.wrap>div:nth-child(-n+4){
  width:calc(25% - 10px);
  height:300px;
}

.wrap>div:nth-child(n+5){
/*   display:none; */
  width:150px;
  height:150px;
  
}
 <div class="wrap">
    <div><img src="https://picsum.photos/seed/p1/800/600" alt="Изображение 01"></div>
    <div><img src="https://picsum.photos/seed/p2/600/300" alt="Изображение 02"></div>
    <div><img src="https://picsum.photos/seed/p3/600/800" alt="Изображение 03"></div>
    <div><img src="https://picsum.photos/seed/p4/800/600" alt="Изображение 04"></div>
    <div><img src="https://picsum.photos/seed/p5/800/600" alt="Изображение 05"></div>
    <div><img src="https://picsum.photos/seed/p6/800/600" alt="Изображение 06"></div>
    <div class="seven"><img src="https://picsum.photos/seed/p7/800/600" alt="Изображение 07"></div>
    <div><img src="https://picsum.photos/seed/p8/800/600" alt="Изображение 08"></div>
    </div>

→ Ссылка