美文网首页
flex布局

flex布局

作者: GaoXiaoGao | 来源:发表于2020-09-27 13:45 被阅读0次

    1.flex布局

    flex布局弹性布局,在移动端使用很多,在pc端应用也越来越多
    开启了flex布局的元素叫flex container
    flex container里的直接子元素叫flex container items
    如何开启flex布局?
    css中设置display:flex或display:inline-flex就可以了
    //flex是块级元素
    //inline-flex是行内元素

    2.flex的相关属性

    应用在flex container上的css属性

    flex-flow
    flex-direction
    flex-wrap
    justify-content
    align-items
    align-content
    

    应用在flex items上的属性

    flex
    flex-grow
    flex-basis
    flex-shrink
    order
    align-self
    

    3.flex-container的一些属性

    flex-direction 决定主轴的方向
    默认情况下,flex items都是沿着main axis(主轴)从main start开始往main end方向排布

    flex-direction: row;  //从左向右排布(主轴从左到右)
    flex-direction: row-reverse; //从右向左排布(主轴从右到左)
    flex-direction: column; //从上到下排布(主轴从上到下)
    flex-direction: column-reverse; //从下到上排布(主轴从下到下)
    

    justify-content
    此属性决定了flex items在主轴上的对齐方式

    justify-content: flex-start //也是默认值,默认与main start位置对齐
    justify-content: flex-end //main end位置对齐
    justify-content: center //居中对齐
    justify-content: space-between //左右元素紧贴边,中间元素居中对齐,并且平分空白区域
    justify-content: space-evenly //所有元素都平分空白区域,并且居中
    justify-content: space-around //左右元素距离边的空白小一些,其它都平分空白区域,左右元素的空白距离其实正好是中间元素空白区域的一半
    

    align-items决定了flex items在cross axis(交叉轴)上的对齐方式(竖直方向)

    align-items:normal; 在弹性布局中,效果跟stretch一样
    align-items:stretch:当flex items在cross axis方向的size为auto时,flex items的高度会拉伸到填充flex container,前提是flex items没有设置高度值
    align-items:flex-start,当flex items设置的有高度时,对齐方式是顶部对齐。
    align-items:flex-end,当flex items设置有高度时,对齐方式是底部对齐
    align-items:center; 在交叉轴的中心点对齐
    align-items:baseline; 与基准线对齐
    

    默认情况display:flex下(flex-wrap:nowrap 不换行)中所有的flex items都会在同一行显示,显示不下时会进行收缩。

    设置flex-wrap:wrap;后当在同一行显示不下时,会换行显示。flex-wrap:wrap-reverse;反转显示,用得比较少
    
    flex-flow是flex-direction || flex-wrap的简写
    可以省略,顺序任意
    例子:flex-flow: row-reverse wrap;从右向左排布,当显示不下时,换行
    

    align-content决定了多行flex items在cross axis上的对齐方式

    align-content:stretch; //有高度时拉伸不管用 
    align-content:flex-start; //交叉轴上依次排布
    align-content:flex-end; //交叉轴从底部依次向上排布
    align-content:center; //居中
    align-content:space-betweend; //上下元素之间有空白
    align-content:space-around; //上下元素之间有空白是中间分隔空间的一半
    align-content:space-evenly; //所有元素之间有空白平均
    

    4.flex-items的一些属性

    order决定了items的排布顺序
    order:16 (正数,负数,0)值越小越排列在前面
    默认值是0

    align-self会覆盖父元素flex-container设置的align-items属性
    auto默认值,从flex container的align-items设置
    stretch、flex-start、flex-end、center、baseline效果跟align-items一致

    flex-grow拉伸
    flex-grow:1
    flex-grow:1
    flex-grow:1
    效果是三个元素平均拉伸
    如果所有flex items的flex-grow总和超过1,每个flex item扩展的size为flex container剩余的空间size * flex-grow / sum

    如果所有的flex items的flex-grow总和不超过1,每个flex item扩展的size为
    flex container的 剩余size * flex-grow

    flex-shrink决定了flex items如何收缩
    可以设置任意的非负数字(正数、负数、0)默认值1
    当flex items在main axis方向上超过了flex container的size,flex-shrink属性才会有效

    如果所有flex items的flex-shrink总和超过1,每个flex item的收缩size为
    flex items超出flex container的size * 收缩比例/所有flex items的收缩比例之和

    如果所有flex items的flex-shrink总和sum不超过1,每个flex item收缩的size为
    flex items超出flex container的size * sum * 收缩比例/所有flex items的收缩比例之和
    收缩比例=flex-shrink * flex item的base size
    base-size就是flex item放入flex container之前的size

    flex-basis用来设置flex items在main axis方向上的base size
    auto(默认值)、具体的宽度数值(100px)

    决定flex items最终base size的因素,从优先级从高到低

    max-width\max-height\min-width\min-height
    flex-basis
    width\height
    内容本身的size

    flex属性(了解)
    flex是flex-grow || flex-shrink|| flex-basis的简写
    可以指定1、2、3个值

    单值的时候,值必须是以下其中之一
    一个无单位数,它会被当作flex-grow的值
    一个有效的宽度值,它会被当作flex-basis的值
    关键字 none auto 或 initial
    双值的时候
    第一个值必须为一个无单位数,并且它会被当作flex-grow的值
    第二个值必须为以下之一
    一个无单位数,它会被当作flex-shrink的值
    一个有效的宽度值,它会被当作flex-basis的值

    三个值的时候
    第一个值必须无单位的数,并且它会被当作flex-grow的值
    第二个值必须无单位的数,并且它会被当作flex-shrink的值
    第三个值必须为一个有效的宽度值,并且它会被当作flex-basis的值

    相关文章

      网友评论

          本文标题:flex布局

          本文链接:https://www.haomeiwen.com/subject/vgskuktx.html