掌握一维布局的终极解决方案
Flexbox 由两个主要部分组成:
display: flex 的元素.flex-demo {
display: flex;
gap: 10px;
}
.flex-item {
background: #3498db;
color: white;
padding: 20px;
}控制 Flex 项目的排列方向,定义了主轴的方向。
.container {
display: flex;
flex-direction: row; /* 水平排列(默认)*/
flex-direction: column; /* 垂直排列 */
flex-direction: row-reverse; /* 水平反向排列 */
flex-direction: column-reverse; /* 垂直反向排列 */
}控制 Flex 项目在主轴上的对齐方式。
.container {
display: flex;
justify-content: flex-start; /* 起始对齐(默认)*/
justify-content: flex-end; /* 结束对齐 */
justify-content: center; /* 居中对齐 */
justify-content: space-between; /* 两端对齐 */
justify-content: space-around; /* 均匀分布 */
justify-content: space-evenly; /* 等距分布 */
}控制 Flex 项目在交叉轴上的对齐方式。
.container {
display: flex;
align-items: stretch; /* 拉伸填充(默认)*/
align-items: flex-start; /* 起始对齐 */
align-items: flex-end; /* 结束对齐 */
align-items: center; /* 居中对齐 */
align-items: baseline; /* 基线对齐 */
}控制多行 Flex 项目在交叉轴上的对齐方式(仅在多行时有效)。
.container {
display: flex;
flex-wrap: wrap;
align-content: stretch; /* 拉伸填充(默认)*/
align-content: flex-start; /* 起始对齐 */
align-content: flex-end; /* 结束对齐 */
align-content: center; /* 居中对齐 */
align-content: space-between; /* 两端对齐 */
align-content: space-around; /* 均匀分布 */
}控制 Flex 项目的拉伸能力。
.flex-grow-demo {
display: flex;
}
.flex-grow-demo .flex-item {
flex-grow: 1;
}
.flex-grow-demo .flex-item:nth-child(2) {
flex-grow: 2;
}控制 Flex 项目的收缩能力。
设置 Flex 项目的初始大小。
/* flex: grow shrink basis */
.item {
flex: 0 1 auto; /* 默认值 */
flex: 1; /* 等同于 flex: 1 1 0 */
flex: auto; /* 等同于 flex: 1 1 auto */
flex: none; /* 等同于 flex: 0 0 auto */
}控制 Flex 项目的排列顺序。
控制 Flex 项目是否换行。
.container {
display: flex;
flex-wrap: nowrap; /* 不换行(默认)*/
flex-wrap: wrap; /* 换行 */
flex-wrap: wrap-reverse; /* 反向换行 */
}.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 20px;
background: #2c3e50;
color: white;
}
.nav-links {
display: flex;
gap: 20px;
}.card-grid {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 1 1 300px;
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}.centered {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}