#html #css #flexbox
#HTML #css — код #flexbox
Вопрос:
Привет, я не был слишком уверен, как на самом деле назвать это название. Я не мог придумать для него точного названия, но я ни за что на свете не могу понять, почему класс ‘topb’ находится в классе ‘bottom’, тогда как в HTML его нет. Структура, которую я ищу, выглядит следующим образом. Верхний родительский элемент — ‘.container’, тогда у меня есть две дочерние строки (‘top’ и ‘bottom’). В «top» у меня есть «topa» и «topb» в качестве дочерних элементов, оба из которых я хочу разделить на ряд. Теперь в примере по какой-то причине ‘topb’, который имеет черный цвет для своего черного поля, по какой-то причине находится в нижнем ряду, когда мне это нужно в верхнем. Я почти уверен, что это глупая ошибка, но я просто прохожу этот этап осознания того, на что обратить внимание, когда я делаю эти простые вещи.
-Спасибо
.container {
display: flex;
position: relative;
flex-flow: row wrap;
justify-content: center;
align-items: stretch;
height: 100vh;
width: 80%;
/*padding-top: 2%;
padding-bottom: 18%;
margin: 5% auto 8% auto; */
background-color: white;
}
.container h2 {
color: orange;
}
.top {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-items: center;
border: 2px solid blue;
}
.top * {
flex: 1 1 50%;
}
.bottom {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-items: flex-start;
border: 2px solid red;
}
.top,
.bottom {
width: 100%;
}
.topa {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-content: center;
border: 2px solid orange;
height: 100%;
}
.topb {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-content: center;
border: 2px solid purple;
background-color: black;
height: 100%;
}
<div id="bigwrap">
<div class="container">
<div class="top">
<div class="topa">
</div>
<div class="topb">
</div>
</div>
<div class="bottom">
</div>
</div>
</div>
Ответ №1:
Измените это:
.top * {
flex: 1 1 50%;
}
К этому:
.top * {
flex: auto;
}
https://jsfiddle.net/maspq7np/
Вот небольшая документация: https://css-tricks.com/snippets/css/a-guide-to-flexbox /
Комментарии:
1. Подождите, но как изменение этого имеет отношение к позиционированию? Это работает, но я просто немного запутался в том, как это работает. Также, насколько мне известно, flex: auto не рассматривается в этом документе. Я просто немного смущен тем, как здесь уместно управлять гибкой основой. Спасибо
2. Неважно, что это покрыто, но все еще запутано в том, насколько эти два были актуальны.
Ответ №2:
Я думаю, вы хотели что-то вроде этого:
.container {
display: flex;
position: relative;
flex-flow: row wrap;
justify-content: center;
height: 100vh;
width: 80%;
margin: auto;
background-color: white;
}
.top {
display: flex;
flex-flow: row wrap;
justify-content: center;
align-items: center;
border: 2px solid blue;
}
.top,
.bottom {
flex: 0 0 100%;
height: 50%;
}
.top * {
flex: 1 1 50%;
display: flex;
flex-flow: row wrap;
justify-content: center;
align-content: center;
height: 100%;
}
.topa {
background: orange;
}
.topb {
background: purple;
}
.bottom {
background: red;
}
<div class="container">
<div class="top">
<div class="topa"></div>
<div class="topb"></div>
</div>
<div class="bottom">
</div>
</div>
В вашем примере нижний div не имел height….so есть одна возможная причина.