主轴方向由flex-direction决定,必须配合display:flex使用;row(水平向右)、row-reverse(水平向右但顺序反转)、column(垂直向下)、column-reverse(垂直向下但顺序反转);justify-content仅在已定主轴上分配空间,不改变方向。
主轴排列不正确,通常是因为 flex-direction 的值没设对。Flex 布局的主轴方向由它决定,而不是靠 justify-content 或元素顺序“强行调整”。先确认你想要的排列方向,再选对属性值。
系flex-direction 有四个常用值,直接决定主轴走向:
只设 flex-direction 不生效?很可能忘了给父元素加 display: flex:
.container {
display: flex; /* 必须先启用 flex */
flex-direction: column; /* 再指定主轴方向 */
}没有 display: flex 或 display: inline-flex,flex-direction 等属性会被忽略。
justify-content 只负责在**已确定的主轴上**分配剩余空间,它不会改变主轴方向:
row 时,justify-content: flex-end 把元素推到最右边column 时,同一句代码会把元素推到最底部如果发现元素“没按预期对齐”,优先检查 flex-direction 是否符合当前布局意图,而不是盲目调 justify-content。
可以用媒体查询适配不同屏幕:
.container {
display: flex;
flex-direction: column; /* 小屏竖排 */
}
@media (min-width: 768px) {
.container {
flex-direction: row; / 大屏横排 /
}
}
这种写法比用 flex-wrap 或 JS 控制更简洁稳定,适合导航、卡片组等常见场景。