margin-top tylko wtedy, gdy element flex jest opakowany

88

Mam pojemnik elastyczny z dwoma elementami elastycznymi. Chcę ustawić górny margines na drugim, ale tylko wtedy, gdy jest zawinięty, a nie na pierwszej linii elastycznej.

Jeśli to możliwe, chcę unikać zapytań o media.

Pomyślałem, że rozwiązaniem może być dół marginesu na pierwszym elemencie. Jednak dodaje miejsca na dole, gdy elementy nie są zawinięte, więc ten sam problem.

To jest mój kod:

.container {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
}
.item-big {
  background: blue;
  width: 300px;
}
.item-small {
  background: red;
  margin-top: 30px;
}
<div class="container">
  <div class="item-big">
    FIRST BIG ELEM
  </div>
  <div class="item-small">
    SECOND SMALL ELEM
  </div>
</div>

Manuel Di Iorio
źródło
1
Pytania szukające pomocy w debugowaniu („dlaczego ten kod nie działa?”) Muszą zawierać żądane zachowanie, określony problem lub błąd oraz najkrótszy kod niezbędny do odtworzenia go w samym pytaniu. Nie nadużywaj bloków kodu, aby obejść ten wymóg .
Paulie_D
Problem polega na tym, że w tym przypadku nie musiałem wyjaśniać więcej kodu, więc jest to problem StackOverflow, jeśli wymagany jest kod blokowy.
Manuel Di Iorio
1
Problemem jest przydatność dla przyszłych użytkowników SO. Jeśli twój link JSfiddle zniknął, twój post jest zasadniczo bezużyteczny. Dlatego SO prosi o kod ... najlepiej we fragmentach kodu dostępnych podczas tworzenia pytania.
Paulie_D
Ok, zrozumiałem, edytuję pytanie tak, aby było zgodne z regulaminem;)
Manuel Di Iorio

Odpowiedzi:

174

Możesz dodać trochę margin-topdo obu elementów elastycznych i ujemną margin-toptę samą kwotę do pojemnika elastycznego.

W ten sposób ujemny margines pojemnika elastycznego zneutralizuje margines elementów elastycznych w pierwszej linii, ale nie margines elementów zawiniętych w inne wiersze.

.container {
  margin-top: -30px;
}
.item-big, .item-small {
  margin-top: 30px;
}

Oriol
źródło
114
Och, CSS, dlaczego mi to
robisz
3
Doskonała odpowiedź
pilau
3
To nie działa, gdy kontener ma kolor tła lub obramowanie
Frank van Wijk