플렉스 아이템이 포장 된 경우에만 margin-top


88

두 개의 플렉스 항목이있는 플렉스 컨테이너가 있습니다. 두 번째 줄에 여백 상단을 설정하고 싶지만 첫 번째 플렉스 라인이 아닌 래핑 된 경우에만 설정합니다.

가능하다면 미디어 쿼리 사용을 피하고 싶습니다.

첫 번째 요소의 margin-bottom이 해결책이 될 수 있다고 생각했습니다. 그러나 요소를 감싸지 않을 때 하단에 공간을 추가하므로 동일한 문제가 발생합니다.

이것은 내 코드입니다.

.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>


1
디버깅 도움말을 찾는 질문 ( "이 코드가 작동하지 않는 이유")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서 재현하는 데 필요한 가장 짧은 코드가 포함되어야 합니다. 이 요구 사항을 해결하기 위해 코드 블록을 남용하지 마십시오 .
Paulie_D

문제는이 경우 더 많은 코드로 설명 할 필요가 없었기 때문에 블록 코드가 필요한 경우 StackOverflow의 문제입니다.
Manuel Di Iorio 2015-06-17

1
문제는 SO의 미래 사용자를 위한 유용성입니다 . JSfiddle 링크가 사라지면 게시물은 본질적으로 쓸모가 없습니다. 그래서 질문을 만들 때 사용할 수있는 코드 스 니펫에서 SO가 코드를 요청합니다.
Paulie_D

좋아, 내가 이해, 나는 규칙을 준수하는 질문을 편집하고 있습니다)
마누엘 디 Iorio

답변:


174

margin-top두 플렉스 항목 에 일부 를 추가 margin-top하고 플렉스 컨테이너에 동일한 양 의 음수 를 추가 할 수 있습니다 .

이런 식으로 플렉스 컨테이너의 음수 여백은 첫 번째 줄에서 플렉스 항목의 여백을 중립화하지만 다른 줄로 래핑 된 항목의 여백은 무효화합니다.

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


114
오 CSS, 왜 u는 나에게 창피를 할
Sanderfish

3
우수 답변
pilau

3
컨테이너가 배경색 또는 테두리가있는 경우이 작동하지 않습니다
프랭크 반 Wijk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.