플렉스 아이템을 오른쪽으로 띄우기


114

나는

<div class="parent">
    <div class="child" style="float:right"> Ignore parent? </div>
    <div> another child </div>
</div>

부모는

.parent {
    display: flex;
}

첫 번째 아이의 경우 항목을 오른쪽으로 간단히 띄우고 싶습니다.

그리고 내 다른 div는 부모가 설정 한 플렉스 규칙을 따릅니다.

이것이 가능합니까?

그렇지 않은 경우 float: right언더 플렉스를 어떻게 수행 합니까?

답변:


213

플렉스 컨테이너float 내부에서 사용할 수 없으며 그 이유는 여기에서 볼 수 있듯이 float 속성이 플렉스 레벨 상자에 적용되지 않기 때문입니다 .Fiddle

따라서 child요소를 요소의 오른쪽에 배치 parent하려면 사용할 수 margin-left: auto있지만 이제 child요소는 div여기에서 볼 수 있듯이 다른 요소도 오른쪽으로 밀게 됩니다 Fiddle.

이제 할 수있는 것은 요소의 순서를 변경하고 요소에 설정 order: 2하여 child두 번째 div에 영향을주지 않도록하는 것입니다.

.parent {
  display: flex;
}
.child {
  margin-left: auto;
  order: 2;
}
<div class="parent">
  <div class="child">Ignore parent?</div>
  <div>another child</div>
</div>


감사합니다. 첫 번째 솔루션을 살펴볼 수 있습니다. display : absolute를 사용하고 싶지 않습니다. 다른 아이들이 첫 번째 아이의 아래에 있지 않아야하기 때문입니다.
Zhen Liu

4
" 수레는 플렉스 컨테이너에 침입하지 않습니다 ". 사실이지만 그 이유는 아닙니다. 그 이유는 float속성이 플렉스 레벨 상자에 적용되지 않기 때문 입니다.
Oriol 2016 년

작동합니다, 감사합니다! 왜 justify-self: end;(또는 비슷한 것이) 아동에게 효과가 없습니까? 이것은 flexbox 문제에 대한 그다지 유연하지 않은 해결책처럼 보입니다.
Brady Dowling

1
@BradyDowling 나는 이것이 늦은 응답이라는 것을 알고 있지만 justify-self 종료를 위해서는 디스플레이가 그리드로 설정되어야합니다. Flexbox는 justify-self : end를 무시합니다. 여기를보십시오 : developer.mozilla.org/en-US/docs/Web/CSS/justify-self
Paul

<div> another child </ div> <div class = "child"> 부모를 무시 하시겠습니까? </ div> U는 두 div를 교체 할 수 있으며 순서 2 없이도 작동합니다
yeeen

26

수레가 필요하지 않습니다. 사실, float는 flexbox에서 무시 되기 때문에 쓸모가 없습니다 .

CSS 포지셔닝도 필요하지 않습니다.

몇 가지 플렉스 방법을 사용할 수 있습니다. auto여백다른 답변 에서 언급되었습니다 .

다른 두 가지 옵션이 있습니다.

  • 사용 justify-content: space-betweenorder속성.
  • justify-content: space-betweendiv의 순서를 사용 하고 뒤집습니다.

.parent {
    display: flex;
    justify-content: space-between;
}

.parent:first-of-type > div:last-child { order: -1; }

p { background-color: #ddd;}
<p>Method 1: Use <code>justify-content: space-between</code> and <code>order-1</code></p>

<div class="parent">
    <div class="child" style="float:right"> Ignore parent? </div>
    <div>another child </div>
</div>

<hr>

<p>Method 2: Use <code>justify-content: space-between</code> and reverse the order of 
             divs in the mark-up</p>

<div class="parent">
    <div>another child </div>
    <div class="child" style="float:right"> Ignore parent? </div>
</div>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.