Я новичок в css и даже новичок в flex. Я не мог найти ответ, поэтому я начал новый. У меня есть следующий контейнер и элемент:
.container {
display: flex;
justify-content: space-between;
align-items: center;
}
.item {
color: rgb(51, 51, 51);
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
Таким образом, я получаю 2 предмета с обеих сторон (один слева и один справа). Я хотел бы знать, как сделать следующее:
Благодарю!
Решение этой проблемы - использование вложенных flexboxes. Избавьтесь от display: block;
on .item
- вы не можете смешивать правила гибкого и блочного отображения, подобные этому.
Что вы хотите сделать, так это настроить ряд контейнеров:
Разметка будет выглядеть так:
<main class="container">
<section class="left-container">
<div class="item"></div>
</section>
<section class="right-container">
<div class="item"></div>
</section>
</main>
В слое CSS вы предоставляете .container
верхнего уровня, а затем justify-content: space-between
который толкает контейнеры по сторонам.
.container {
display: flex;
justify-content: space-between;
}
В двух вложенных контейнерах вам нужно сделать их обоих display: flex;
также. Теперь вы можете управлять позиционированием ваших элементов .item
как вы хотите. align-items: center
управляет вертикальной осью, поэтому .left-container
получает только это позиционирование, в то время как правый контейнер получает justify-content: center;
для управления вертикальным выравниванием.
.left-container {
background-color: darkgray;
display: flex;
align-items: center;
height: 200px;
width: 50%;
}
.right-container {
background-color: lightgray;
display: flex;
align-items: center;
justify-content: center;
height: 200px;
width: 50%;
}
Стилизация предмета довольно проста - я просто дал высоту и ширину для демонстрационных целей. Они не нужны. Если вы хотите сделать точные настройки, используйте margin
на .item
чтобы немного оттолкнуть эти стандарты.
.item {
background-color: red;
height: 100px;
width: 100px;
}