Ваша проблема связана с тем, как работает модель блочной верстки и свойство `margin` в CSS. Когда вы добавляете верхний отступ (`margin-top`) к блоку `.a2` (красный), этот отступ также влияет на другие блоки, потому что блочные элементы "подвигаются" вниз. Это явление называется "схлопывание отступов" (margin collapse).
Чтобы отождить красный блок от синего, при этом сохранив расстояние в 20 пикселей между синим и зеленым блоками, вы можете использовать несколько подходов:
### Способ 1: Использование `padding`
Вы можете использовать внутренний отступ (`padding`) вместо внешнего (`margin`). Например, добавьте `padding-top` к родительскому блоку (`.wrapper`):
```css
.wrapper {
width: 400px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
gap: 20px;
background-color: antiquewhite;
padding-top: 50px; /* Добавляем внутренний отступ */
}
.a2 {
/* Убираем margin-top */
width: 150px;
height: 150px;
background-color: red;
}
```
### Способ 2: Использование `overflow`
Вы можете добавить свойство `overflow: hidden;` к родительскому элементу `.wrapper`. Это также предотвратит схлопывание отступов:
```css
.wrapper {
width: 400px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
gap: 20px;
background-color: antiquewhite;
overflow: hidden; /* Это предотвратит схлопывание отступов */
}
.a2 {
margin-top: 50px; /* Здесь оставляем отступ */
width: 150px;
height: 150px;
background-color: red;
}
```
### Способ 3: Использование `position`
Еще один вариант — использование `position: relative;` для красного блока. Это также будет предотвращать схлопывание отступов:
```css
.a2 {
margin-top: 50px;
position: relative; /* Это предотвратит схлопывание отступов */
width: 150px;
height: 150px;
background-color: red;
}
```
Каждый из этих подходов позволит вам отодвинуть красный блок, не смещая зеленый блок, сохраняя при этом 20 пикселей отступа между синим и зеленым блоками. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям по дизайну.