Css flex - один элемент справа, другой по центру слева

1

Я новичок в 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 предмета с обеих сторон (один слева и один справа). Я хотел бы знать, как сделать следующее:

  1. Левый элемент будет слева, как и раньше. С точки она заканчивается, до момента, когда контейнер заканчивается - я с правильным элементом, который должен быть центрирован.
  2. Левый элемент будет слева, как и раньше. Правильный элемент будет 10px слева от правого конца контейнера.

Благодарю!

  • 4
    Не могли бы вы предоставить немного HTML и, возможно, картину того, чего вы хотите достичь? Это поможет нам определить причину проблемы.
  • 0
    Вопросы, требующие помощи (« почему этот код не работает или как заставить этот код работать? ») Должны включать желаемое поведение, конкретную проблему или ошибку и самый короткий код, необходимый для его воспроизведения в самом вопросе . Вопросы без четкой постановки проблемы бесполезны для других читателей. См .: Как создать минимальный, полный и проверяемый пример .
Теги:
flexbox

1 ответ

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;
}

Изображение 174551

Codepen: https://codepen.io/staypuftman/pen/PmLyNM

  • 0
    Спасибо за очень подробный ответ! было действительно полезно.
  • 0
    Спасибо - рад, что это помогло. Если ответ решил вашу проблему, пометьте его как принятый, чтобы другие могли следовать решению.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню