Итак, я хочу выровнять элементы внутри flex-box, как на картинке выше.
У меня есть html следующим образом:
<div class = "flex-row">
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
</div>
css как
.flex-row {
min-height: 400px;
display: flex;
align-items: flex-start;
}
.flex-item:nth-child(2) {
align-items: center;
}
.flex-item:last-child {
align-items: flex-end;
}
Ваше редактирование с новым изображением теперь показывает, чего вы действительно хотите достичь. У Paulie_D есть правильный ответ на этот вопрос.






ПРИМЕЧАНИЕ!
чтобы установить высоту столбца, измените px здесь: flex: 0 1 50px; или удалите его!
margin-right/left:auto как:.flex-row {
min-height: 400px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
.flex-item {
flex: 0 1 50px;
}
.flex-item:nth-child(2) {
margin-right: auto;
margin-left: auto;
}
.flex-item:last-child {
margin-left: auto;
}<div class = "flex-row">
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
</div>2. используя align-self
.flex-row {
min-height: 400px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
.flex-item {
flex: 0 1 50px;
align-self: flex-start;
}
.flex-item:nth-child(2) {
align-self: center;
}
.flex-item:last-child {
align-self: flex-end;
}<div class = "flex-row">
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
<div class = "flex-item">
<img src = "/default.png">
</div>
</div>скажите мне для получения дополнительной помощи
Спасибо за ответ, но произошло недопонимание, я изменил картинку своего вопроса. Пожалуйста, вы можете помочь.
Все, что вам нужно сделать, это изменить px здесь :flex: 0 1 100px; или удалить его.
Вот так?
Вам нужно flex-wrap: wrap; Для того, чтобы обернуть предметы должны быть достаточно широкими (100%). Поскольку элемент 100% flex всегда выравнивается по всей ширине, вам нужно text-align, а не align-items, что в первую очередь является неправильным свойством.
align-items - это выравнивание по поперечной оси, а не по главной оси, которая была бы justify-content
.flex-row {
min-height: 400px;
display: flex;
align-items: flex-start;
flex-wrap: wrap;
}
.flex-item {
flex-basis: 100%;
}
.flex-item:nth-child(2) {
text-align: center;
}
.flex-item:last-child {
text-align: right;
}<div class = "flex-row">
<div class = "flex-item">
<img src = "/default.png" width = "100" height = "50">
</div>
<div class = "flex-item">
<img src = "/default.png" width = "100" height = "50">
</div>
<div class = "flex-item">
<img src = "/default.png" width = "100" height = "50">
</div>
</div>Используйте align-self, а не align-items
.flex-row {
min-height: 300px;
display: flex;
width: 90%;
margin: 1em auto;
border: 1px solid red;
justify-content: space-between;
}
.flex-item {
height: 50px;
background: lightblue;
width: 100px;
}
.flex-item:nth-child(2) {
align-self: center;
}
.flex-item:last-child {
align-self: flex-end;
}<div class = "container flex-row">
<div class = "flex-item"></div>
<div class = "flex-item"></div>
<div class = "flex-item"></div>
</div>Не забыть justify-content: space-between;
Посмотрите на этот код
display:flex;
flex-direction: row;
justify-content: flex-start;
align-items: centre;
С помощью flex-direction вы указываете основное выравнивание (по горизонтали с помощью row, по вертикали с помощью column). В зависимости от того, что вы выберете здесь, следующие свойства будут иметь различный эффект.
Затем с помощью justify-content вы указываете, как ваши элементы внутри ваших элементов должны выровнять на главной оси, которую вы только что определили (вертикально или горизонтально).
В данном случае flex-start означает начало моей оси.
А с align-items вы указываете выравнивание вторичной оси. Вертикальный, потому что мы выбираем flex-direction: row;, а не flex-direction: column;. Таким образом, элементы по вертикальной оси будут выровнены по centre
И не забудьте взглянуть на доступные свойства, такие как space-between или flex-end
вы можете перейти по этой ссылке: css-tricks.com/snippets/css/a-guide-to-flexbox