CSS布局_flex布局详解

47 阅读4分钟

关于Flex布局

Flex布局(Flexible Box Layout)是CSS3中引入的一种现代的、强大的布局方式,旨在更轻松地实现复杂的页面布局。它通过将容器及其子元素的属性设置为灵活的方式来实现,使得设计者更容易实现响应式设计和适应不同屏幕尺寸的布局。

优势和应用场景:

  1. 响应式设计: Flex布局天生支持响应式设计,能够轻松适应不同设备和屏幕尺寸。
  2. 简化布局: 相较于传统的布局方式,Flex布局减少了嵌套和复杂的CSS代码,使布局更加直观和简单。
  3. 动态布局: Flex布局适用于动态变化的布局需求,比如面临不同尺寸的内容、动态增减的元素等。
  4. 水平和垂直居中: 通过justify-content和align-items属性,轻松实现元素的水平和垂直居中。
  5. 多列布局: Flex布局非常适用于构建多列布局,而不需要使用浮动或定位。

代码展示:

容器属性

1.flex-direction: 调整主轴方向

row/*主轴方向为水平向右*/

column/*主轴方向为竖直向下*/

row-reverse/*主轴方向为水平向左*/

column-reverse/*主轴方向是竖直向上*/

2.justify-content主要用来设置主轴方向的对齐方式

flex-start /*弹性盒子元素将向起始位置对齐*/

flex-end /*弹性盒子元素将向结束位置对齐*/

center /*弹性盒子元素将向行中间位置对齐*/

space-around /*弹性盒子元素会平均地分布在行里*/

space-between/*第一个贴左边,最后一个贴右边,其他盒子均分,保证每个盒子之间的空隙是相等的*/

3.align-items用于调整侧轴的对齐方式

flex-start/*元素在侧轴的起始位置对齐*/

flex-end/*元素在侧轴的结束位置对齐*/

center/*元素在侧轴上居中对齐*/

stretch/*元素的高度会被拉伸到最大(不给高度时, 才拉伸)*/

4.flex-wrap属性控制flex容器是单行或者多行,默认不换行

nowrap/*不换行(默认),如果宽度溢出,会压缩子盒子的宽度*/

wrap/*当宽度不够的时候,会换行*/

wrap-reverse/*换行,方向与wrap相反,后面的元素在上面/

5.align-content用来设置多行的flex容器的排列方式

flex-start/*各行向侧轴的起始位置堆叠*/

flex-end/*各行向弹性盒容器的结束位置堆叠*/

center/*各行向弹性盒容器的中间位置堆叠*/

space-around/*各行在侧轴中平均分布*/

space-between/*第一行贴上边,最后一个行贴下边,其他行在弹性盒容器中平均分布*/

stretch/*拉伸,不设置高度的情况下*/

项目属性

flex - grow属性

flex - grow属性定义项目的放大比例,默认为0,如果存在剩余空间,也不放大。

flex-grow: <number> (default 0)

flex-grow的默认值为0,如果没有显示定义该属性,是不会拥有分配剩余空间权利的。
number:用数值来定义扩展比率。

flex - shrink属性

flex - shrink属性定义了项目的缩小比例,默认为1,如果空间不足,这个项目将缩小。

flex-shrink: <number> (default 1)

负值对该属性无效。 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。
如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,不用缩小

flex - basis属性

flex - basis属性定义了在分配多余空间之前,项目占据着主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为,就是该项目的本来大小。

flex-basis: <length> | auto (default auto)

auto:无特定宽度值,取决于其它属性值。
length:用长度值来定义宽度。

order属性

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0

order: <integer>

integer:用整数值来定义排列顺序,数值小的排在前面。可以取负值。

align - self属性

align - self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

align-self: auto | flex-start | flex-end | center | baseline | stretch

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。