Чтобы создать сетку, в которой блоки в одной строке имеют разную высоту, вы можете использовать CSS Flexbox или CSS Grid. Ниже приведу примеры с обоими подходами.
### Использование Flexbox
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flexbox Grid</title>
<style>
.container {
display: flex;
flex-wrap: wrap;
gap: 10px; /* расстояние между блоками */
}
.block {
background-color: lightblue;
flex: 1 1 200px; /* измените значение, чтобы настроить ширину блока */
margin: 5px;
padding: 20px;
text-align: center;
}
.tall {
height: 150px;
}
.short {
height: 100px;
}
.medium {
height: 200px;
}
</style>
</head>
<body>
<div class="container">
<div class="block tall">Блок 1</div>
<div class="block short">Блок 2</div>
<div class="block medium">Блок 3</div>
<div class="block tall">Блок 4</div>
<div class="block short">Блок 5</div>
</div>
</body>
</html>
```
### Использование CSS Grid
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grid Layout</title>
<style>
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* автоматическое заполнение колонок */
gap: 10px; /* расстояние между блоками */
}
.block {
background-color: lightcoral;
padding: 20px;
text-align: center;
}
.tall {
height: 150px;
}
.short {
height: 100px;
}
.medium {
height: 200px;
}
</style>
</head>
<body>
<div class="container">
<div class="block tall">Блок 1</div>
<div class="block short">Блок 2</div>
<div class="block medium">Блок 3</div>
<div class="block tall">Блок 4</div>
<div class="block short">Блок 5</div>
</div>
</body>
</html>
```
### Объяснение:
1. **Flexbox**:
- Контейнер с классом `.container` использует `display: flex` и `flex-wrap: wrap`, чтобы позволяло блокам переноситься на новую строку.
- Каждый блок имеет индивидуально заданную высоту через классы `.tall`, `.short`, и `.medium`.
2. **CSS Grid**:
- Контейнер с классом `.container` использует `display: grid` и `grid-template-columns`, чтобы создать адаптивную сетку.
- Блоки занимают заданные высоты с помощью CSS классов.
Оба подхода позволяют динамически создавать сетки с блоками различной высоты, и вы можете выбрать тот, который вам более удобен для вашего проекта.