Создание гибкого элемента float right
У меня есть
<div class="parent">
<div class="child" style="float:right"> Ignore parent? </div>
<div> another child </div>
</div>
Родитель имеет
.parent {
display: flex;
}
Для моего первого ребенка я хочу просто поместить элемент вправо.
И мои другие divs следуют правилам flex, установленным родителем.
Возможно ли это?
Если нет, как мне сделать float: right
в flex?
Ответы
Ответ 1
Вы не можете использовать float
внутри контейнера flex, и причина в том, что свойство float не относится к ящикам уровня flex, как вы можете видеть здесь 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>
Ответ 2
Вам не нужны поплавки. Фактически, они бесполезны, потому что float игнорируются в flexbox.
Вам также не нужно позиционирование CSS.
Существует несколько способов гибки. auto
поля указаны в другом ответе.
Вот еще два варианта:
- Используйте
justify-content: space-between
и свойство order
.
- Используйте
justify-content: space-between
и измените порядок разделов.
.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>