Горизонтальное выравнивание коробки Flex - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь расположить различные div по горизонтали, но они продолжают складываться вертикально. Какой лучший способ это исправить? В моем текущем коде есть другие элементы, которые выравнивают элементы flex-бокса в строке, но при изменении размера они возвращаются к вертикальной компоновке, и я догадываюсь, что это как-то связано с базовым кодом:

CSS

.flex-container
{
    width: 100px;
    padding: 0;
    margin: 0;
    list-style: none;
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    display: inline-block;
    -webkit-flex-flow: row;
    transition: opacity .2s ease-in-out;
}

.flex-item 
{
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    font-family: sansa_normal;

    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: calc(12px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
}

.flex-item:before 
{
    content: '';
    float: left;
    padding-top: 100%;
}

.dark-box-p
{
    background: #8f6cda;
    transition: opacity .2s ease-in-out;
    opacity: 1;
}

.med-box-p
{
    background: #a68fd8;
    transition: opacity .2s ease-in-out;
    opacity: 1;
}

.light-box-p
{
    background: #b5a5d7;
    transition: opacity .2s ease-in-out;
    opacity: 1;
}

HTML

<div class="contentbox">
<div class="flex-container">
<div class="dark-box-p flex-item">
    <span>TEST</span>
</div>
</div>
</div>

<div class="contentbox">
<div class="flex-container">
<div class="med-box-p flex-item">
    <span>TEST</span>
</div>
</div>
</div>

<div class="contentbox">
<div class="flex-container">
<div class="light-box-p flex-item">
    <span>TEST</span>
</div>
</div>
</div>

Codepen:

https://codepen.io/adms2000/pen/LYVZpey

Спасибо!

1 Ответ

1 голос
/ 18 февраля 2020

Так что вы, кажется, немного запутались в том, как работает flexbox. Flex следует применить к родительскому контейнеру, тогда внутренние элементы будут соответствовать выравниванию flex. Прямо сейчас у вас нет родительского элемента, который объединяет все три элемента, вы разделяете их на отдельные контейнеры.

Так что просто удалите дополнительные теги упаковки и поместите flex-элементы в один контейнер, затем примените flex к этому контейнеру. Вам также не нужно иметь flex-flow, если вы делаете строку по умолчанию, и float там не должно быть.

.flex-container {
  width: 100px;
  padding: 0;
  margin: 0;
  list-style: none;
  display: flex;
  transition: opacity 0.2s ease-in-out;
}

.flex-item {
  text-align: center;
  text-decoration: none;
  color: #ffffff;
  font-family: sansa_normal;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: calc(12px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
  padding: 2rem;
}

.dark-box-p {
  background: #8f6cda;
  transition: opacity 0.2s ease-in-out;
  opacity: 1;
}

.med-box-p {
  background: #a68fd8;
  transition: opacity 0.2s ease-in-out;
  opacity: 1;
}

.light-box-p {
  background: #b5a5d7;
  transition: opacity 0.2s ease-in-out;
  opacity: 1;
}
<div class="contentbox">
  <div class="flex-container">
    <div class="dark-box-p flex-item">
        <span>TEST</span>
    </div>
    <div class="med-box-p flex-item">
        <span>TEST</span>
    </div>
    <div class="light-box-p flex-item">
        <span>TEST</span>
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...