标签: flex

  • 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 取值一样