引入弹性盒子的好处是让一个容器对子元素的排列、对齐、分配空白空间更加有效。
CSS3 弹性盒子内容
弹性盒子包含一个弹性容器,以及弹性子元素;默认情况下一个容器在一行显示
| <style> |
| .flex-container { |
| display: flex; |
| width: 400px; |
| height: 400px; |
| background-color: pink; |
| } |
| |
| .flex-item { |
| width: 100px; |
| height: 200px; |
| margin: 10px; |
| background-color: purple; |
| } |
| </style> |
复制
| <div class="flex-container"> |
| <div class="flex-item">1</div> |
| <div class="flex-item">2</div> |
| <div class="flex-item">3</div> |
| </div> |
复制
flex-direction:row|row-reverse|column|column-reverse
- row,主轴方向是水平,排列从左到右
- row-reverse 主轴方向是水瓶,但排列是从右到左
- column 主轴方向是列,排列从上到下
- column-reverse 主轴方向是列,排列从下到上
| <style> |
| .flex-container { |
| display: flex; |
| |
| |
| flex-direction: row-reverse; |
| width: 400px; |
| height: 400px; |
| background-color: pink; |
| } |
| .flex-item { |
| width: 100px; |
| height: 200px; |
| margin: 10px; |
| background-color: purple; |
| } |
| </style> |
复制
| <div class="flex-container"> |
| <div class="flex-item">1</div> |
| <div class="flex-item">2</div> |
| <div class="flex-item">3</div> |
| </div> |
复制
justify-content属性
justify-content:flex-start|flex-end|center|space-beween|space-around;
针对主轴方向上
| <style> |
| .flex-container { |
| display: flex; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| justify-content: space-around; |
| width: 400px; |
| height: 400px; |
| background-color: pink; |
| } |
| |
| .flex-item { |
| width: 100px; |
| height: 200px; |
| background-color: purple; |
| } |
| </style> |
复制
| <div class="flex-container"> |
| <div class="flex-item">1</div> |
| <div class="flex-item">2</div> |
| <div class="flex-item">3</div> |
| </div> |
复制
align-items属性
align-items属性:弹性子元素在(侧轴)交叉轴上的对齐方式
- align-items: stretch; 默认值,如果弹性子元素没有高度或高度为auto,将占满整个容器的高度
- align-items: flex-start;子元素在侧轴顶端对齐
- align-items: flex-end; 子元素在侧轴末端对齐
- align-items: center; 子元素在侧轴中间对齐
- align-items: baseline; 子元素在第一行文字的基线对齐
| <style> |
| .flex-container { |
| display: flex; |
| align-items: center; |
| width: 400px; |
| height: 400px; |
| background-color: pink; |
| } |
| |
| .flex-item { |
| width: 100px; |
| height: 200px; |
| background-color: purple; |
| } |
| </style> |
复制
| <div class="flex-container"> |
| <div class="flex-item">1</div> |
| <div class="flex-item">2</div> |
| <div class="flex-item">3</div> |
| </div> |
复制
align-content属性
align-content属性 针对侧轴并且是多列
align-content: flex-start | flex-end | center | space-between | space-around | stretch
与上文侧轴align-items相似 只不过针对的是多列
| <style> |
| .box { |
| display: flex; |
| flex-wrap: wrap; |
| align-content: flex-start; |
| width: 400px; |
| height: 400px; |
| background-color: palegoldenrod; |
| } |
| |
| .item { |
| width: 150px; |
| height: 100px; |
| background-color: pink; |
| } |
| </style> |
复制
| <div class="box"> |
| <div class="item"></div> |
| <div class="item"></div> |
| <div class="item"></div> |
| </div> |
复制
flex-wrap 属性
flex-wrap 属性 flex-wrap: nowrap|wrap|wrap-reverse; 顾名思义,不换行|换行|换行并且行顺序相反
在这里,不换行,符合弹性盒子特定,当空间不够时,有需要不换行,那么容器里的子盒子大小会变小
属性值如下:
- row:这是默认值。当设置为row时,主轴的方向为水平,子元素从左到右排列。
- row-reverse:当设置为row-reverse时,主轴的方向仍然是水平,但子元素从右到左排列,即反向水平排列。
- column:当设置为column时,主轴的方向变为垂直,子元素从上到下排列。
- column-reverse:当设置为column-reverse时,主轴的方向为垂直,但子元素从下到上排列,即反向垂直排列。
| <style> |
| .box { |
| display: flex; |
| flex-wrap: nowrap; |
| width: 400px; |
| height: 400px; |
| background-color: palegoldenrod; |
| } |
| |
| .item { |
| width: 150px; |
| height: 100px; |
| background-color: pink; |
| } |
| </style> |
| </head> |
| |
| <body> |
| <div class="box"> |
| <div class="item"></div> |
| <div class="item"></div> |
| <div class="item"></div> |
| </div> |
复制