#html #css #flexbox
Вопрос:
Как я могу выровнять список элементов в правой части в виде списка с помощью flexbox?
что-то вроде этого?
p {
display: flex;
justify-content: space-between;
}
<p>
<span>List</span>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>
Ответ №1:
Вам нужно разделить эти два элемента.
Что-то вроде этого:
.list {
display: flex;
justify-content: space-between;
}
<div class="list">
<div>
<span>List</span>
</div>
<div>
<div>3 oranges</div>
<div>4 apples</div>
<div>6 bananas</div>
</div>
</div>
Комментарии:
1. Обратите внимание, что
<div>
первое<span>
не является строго необходимым, но, вероятно, желательно.2. да, вы правы. Это «выглядит» лучше 🙂
Ответ №2:
- Сгруппируйте последние три
<span>
в<p>
- Заверните первый
<span>
и<p>
в<div>
🎁
Используйте семантические элементы: p
для абзацев / текста.
1 — justify-content: space-between;
Добавьте пространство между двумя дочерними элементами <div>
. Следовательно, первое <span>
и второе <p>
отодвигаются в стороны.
div {
display: flex;
justify-content: space-between;
}
p {
display: flex;
flex-direction: column;
}
<div>
<span>List</span>
<p>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>
</div>
Я бы использовал первый подход.
2 — margin-left: auto;
Толкает <p>
вправо.
div {
display: flex;
}
p {
display: flex;
flex-direction: column;
margin-left: auto;
}
<div>
<span>List</span>
<p>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>
</div>
3 margin-right: auto;
Толкает <p>
вправо.
div {
display: flex;
}
div > span {
margin-right: auto;
}
p {
display: flex;
flex-direction: column;
}
<div>
<span>List</span>
<p>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>
</div>
4 — flex-grow: 1;
Первый <span>
занимает столько места, сколько доступно. Следовательно, <p>
отодвигается вправо.
div {
display: flex;
}
div > span {
flex-grow: 1;
}
p {
display: flex;
flex-direction: column;
}
<div>
<span>List</span>
<p>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>
</div>
Ответ №3:
<div class="list">
<span>List</span>
<div>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</div>
.list {
display: flex;
flex-direction:row;
justify-content: space-between;
}
.list div{
display:flex;
flex-direction:column;
}
Вы должны обернуть список в div
, а затем элементы списка в другой div, чтобы получить нужный макет.
Ответ №4:
Это должно сработать
.cont {
display: flex;
justify-content: space-between;
}
.cont div {
display: flex;
flex-direction: column;
}
<div class="cont">
<div>
<span>List</span>
</div>
<div>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</div>
</div>
Ответ №5:
Без изменения структуры HTML вы можете сделать, как показано ниже:
p {
display: flex;
flex-wrap:wrap;
justify-content: space-between;
}
p span:nth-child(n 3) {
width:100%;
text-align:right;
}
<p>
<span>List</span>
<span>3 oranges</span>
<span>4 apples</span>
<span>6 bananas</span>
</p>