flex布局(弹性布局、伸缩布局)

设置了 display:flex; 的盒子会变成一个弹性盒子。弹性盒子会多出了主轴侧轴的概念。

  • 主轴:默认水平向右
  • 侧轴:默认垂直向下,与主轴垂直

注意点: 弹性盒子内部的子元素会默认沿着主轴方向排布!

在flex布局中一般会把父元素称之为:flex容器,子元素称之为:flex项目

什么时候用flex布局


flex布局是css3中新出的布局方式,存在一定的兼容性问题

传统布局弹性布局
兼容性好css3新布局,PC端中存在兼容性问题(如:IE)
布局繁琐布局方便
常用于PC端布局常用于移动端布局

布局方法的原则:

  • 如果是pc端页面布局,我们一般还是考虑传统布局方式
  • 如果是移动端或者不考虑兼容性问题的pc端页面布局,我们一般就可以考虑flex弹性布局如果不用考虑兼容性问题,flex布局会更加方便

主轴方向 flex-direction


弹性盒子中主轴方向默认是水平向右的。

但是其实可以通过flex-diretion 属性修改主轴的方向

取值效果(主轴方向)
row水平向右(默认)
row-reverse水平向左
column垂直向下
column-reverse垂直向上

主轴对齐方式 justify-content


效果取值
向主轴开始方向对齐flex-start
向主轴结束方向对齐flex-end
居中对齐center
让空白环绕盒子显示space-around
空白只在两者之间显示space-between
空白均分space-evenly

单行侧轴对齐方式 align-items


效果属性名
向侧轴开始方向对齐flex-start
向侧轴结束方向对齐flex-end
居中对齐center
拉伸显示(默认值)stretch

stretch:让子盒子在侧轴方向拉伸显示

只有当子元素在侧轴方向没有设置宽度或者高度时,才会有拉伸效果(否则以设置的值为准)

注意点:

  • 侧轴方向不设置大小会默认拉伸,主轴方向不设置大小会由内容撑开
  • 主轴如果变成垂直方向,侧轴会变成水平方向

是否换行 flex-wrap


flex布局中,默认是单行显示的,如果子元素的宽度之和超出了父元素的宽度,此时子盒子会默认压缩显示。

此时,如果需要设置子元素换行显示,可以使用属性 flex-wrap

属性值效果
nowrap不换行(默认值)
wrap换行

多行侧轴对齐方式 align-content


取值效果
flex-start向侧轴的开始位置对齐
flex-end向侧轴的结束位置对齐
center居中对齐
stretch子元素高度拉伸显示(只有没设高才有效果)
space-around空白环绕盒子显示
space-between空白只在盒子之间显示

align-items与align-content的区别:

  • 如果子元素没有换行,只有一行的时候使用 align-items
  • 如果子元素有多行,此时 控制多行 的时候使用 align-content

分配子元素空间 flex


作用: 按照份数分配父元素主轴(宽度)的剩余空间

优先分配具体的宽度,剩余的空间再按照份数分配。

代码: flex:份数(数字);

* 子元素排序 order


作用: 设置弹性盒子中子元素的排列顺序,数值越小,排列靠前,默认是0

代码: order:数字;

单个子元素侧轴对齐方式 align-self


取值效果
flex-start向侧轴的开始位置对齐(默认相当于顶部对齐)
flex-end向侧轴的结束位置对齐(默认相当于底部对齐)
center居中对齐
stretch子元素高度拉伸显示(只有没设高才有效果)
  • 取值和 align-items 取值一样

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注