나는
<div class="parent">
<div class="child" style="float:right"> Ignore parent? </div>
<div> another child </div>
</div>
부모는
.parent {
display: flex;
}
첫 번째 아이의 경우 항목을 오른쪽으로 간단히 띄우고 싶습니다.
그리고 내 다른 div는 부모가 설정 한 플렉스 규칙을 따릅니다.
이것이 가능합니까?
그렇지 않은 경우 float: right
언더 플렉스를 어떻게 수행 합니까?
답변
플렉스 컨테이너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>
답변
수레가 필요하지 않습니다. 사실, float는 flexbox에서 무시 되기 때문에 쓸모가 없습니다 .
CSS 포지셔닝도 필요하지 않습니다.
몇 가지 플렉스 방법을 사용할 수 있습니다. auto
여백 은 다른 답변 에서 언급되었습니다 .
다른 두 가지 옵션이 있습니다.
- 사용
justify-content: space-between
및order
속성. justify-content: space-between
div의 순서를 사용 하고 뒤집습니다.
.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>