flex详解

基本概念

  1. 传统布局与flex布局

传统布局:基于盒状模型, display 属性 + position属性 + float属性。(特殊布局不易实现,如垂直居中)
Flex 布局:简便完整实现各种页面布局,所有浏览器的支持

2.flex容器(父)与项目(子)

采用 Flex 布局的元素——Flex 容器(flex container),简称”容器”
它的所有子元素自动成为容器成员——称为 Flex 项目(flex item),简称”项目”

  3. 容器默认存在两根轴:

水平的主轴(main axis)主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;
垂直的交叉轴(cross axis)交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

flex布局

.container{
  display: flex;        //容器指定flex布局
  display: inline-flex; //行内元素指定flex布局
  display: -webkit-flex;

}

注:Webkit 内核的浏览器,必须加上-webkit前缀
设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效

容器的属性

flex-direction: row
flex-wrap: nowrap
flex-flow

justify-content:row nowrap
align-items:flex-start 

align-content:  
//主轴方向
flex-direction: row            //主轴左到右  
                row-reverse    //主轴右到左
                column         //主轴上到下
                column-reverse //主轴下到上

//是否换行
flex-wrap:nowrap               //每个项目在主轴均匀压缩,不换行,第一行再上面
          wrap                 //换行,第一行在上面
          wrap-reverse;        //换行,第一行在下面

//主轴方向和是否折叠
flex-flow:<flex-direction> || <flex-wrap>;

//项目在主轴对齐方式
justify-content: flex-start    //左对齐
                 flex-end      //右对齐
                 center        //居中对齐
                 space-between //两边对齐,项目中间相隔相同距离
                 space-around  //两边对齐,两边距离是中间距离一半

//项目在交叉轴对齐方式
align-items:flex-start   //上对齐      
            flex-end     //下对齐
            center       //居中对齐
            baseline     //以第一行文字的基线对齐
            stretch      //若项目未设置高度或设为auto,将占满整个容器的高度

//多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用
align-content:flex-start   //
              flex-end     //
              center       //
              space-between//  
              space-around // 
              stretch      //

项目属性

order:0

flex-grow:0
flex-shrink:1
flex-basis:项目本身大小
flex:0 1 auto 

align-self:继承父元素的align-items,若没有父元素,则等同于stretch
//项目的序号,越小越在前
order:数字

//项目放大比例,为0不放大,为1的各项目等分剩余空间,为2的项目分的剩余空间是为1的项目的两倍
flex-grow:0(默认) | 1 | 2

//项目压缩比例,为1的各项目均等压缩,为0的不压缩
flex-shrink:0 | 1(默认)

//项目占据的主轴空间(main size),浏览器据此算主轴剩余空间,默认项目本身大小
flex-basis:auto(默认) | <length>

//放大、压缩、占主轴空间
flex:<flex-grow> | <flex-shrink> | <flex-basis>//快捷值:auto (1 1 auto) 和 none (0 0 auto)

//设置自己的对齐方式,可覆盖align-items。auto继承父元素的,若没父元素等同于stretch
align-self:auto
           flex-start  
           flex-end  
           center  
           baseline 
           stretch;

布局

网格布局:项目固定长宽,平均分配剩余的空间
圣杯布局: header、content、footer为主轴从上到下的每个项目,content为一个容器,left,center,right为每个项目,项目自动填充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值