flex布局

2018-08-19  本文已影响11人  指尖轻敲

兼容使用


块元素使用flex布局

div{
    display: flex;
}

行内元素使用flex布局

span{
    display: inline-flex;
}

Webkit内核的浏览器使用flex布局(Safari)

div{
    display: -webkit-flex;
}

设置flex布局后,子元素的floatclearvertical-align属性将会失效。

基本概念


容器和项目

使用flex布局的元素,称为“容器”,容器中的所有子元素称为“项目”。下面会详细介绍容器和项目的属性。

主轴和交叉轴

默认情况下,容器有两根轴:水平方向的是“主轴”,从左向右。与主轴垂直交叉的轴叫做“交叉轴”,从上向下。

容器属性


1. flex-direction

该属性是设置主轴方向的,默认情况下是水平向右的。

div{
    display: flex;
    flex-direction: column;
}
2. flex-wrap

该属性定义在一条轴上如果排列不下所有子元素怎么进行换行

div{
    flex-wrap: wrap;
}
3. flex-flow

该属性是flex-directionflex-wrap的简写。默认就是上面两个属性的默认。

div{
    flex-flow: column || wrap;
}
4. justify-content

定义项目在主轴上的排列方式

div{
    justify-content: space-between;
}
5. align-items

定义项目在交叉轴上的对齐方式

div{
    align-items:center;
}
stretch.png
align-content

该属性定义多个主轴轴线的对齐方式。如果只有一条主轴,那么该属性无效。

div{
    align-content: space-around;
}
stretch.png

项目属性


1. order

该属性可以设置项目的排列顺序,值越小越靠前。默认为0。

.item{
   order: 2; 
}
flex-grow

该属性定义项目的放大比例,默认为0,即使存在剩余空间也不放大。

.item{
    flex-grow: 1;
}
.item2{
    flex-grow: 2;
}

如果所有项目的该属性都是1,那么所有项目平分剩余空间,如果一个是2,剩下的都是1,那么属性为2的所占的空间是其他项目的2倍。

flex-shrink

flex-grow相反,设置项目的缩小比例,默认为1,即如果剩余空间不足,项目将缩小。

.item{
    flex-shrink: 1;
}

如果所有项目的的该属性都是1,则空间不足时,都等比缩小。如果有一个项目该属性是0,则该项目不缩小。

负值无效

4. flex-basis

项目所占据主轴的固定空间,出去这个固定空间,剩下的空间才供上面两个属性去分配。该属性的默认值是auto,即项目本身的大小,可以想宽高一样设置固定的像素值。

item{
    flex-basis: 300px;
}
5. flex

该属性是flex-growflex-shrinkflex-basis的简写,默认值是0、1、auto。第一个属性必选,后面两个属性可选。

item{
    flex: 1 1 auto;
}
item2{
    flex: 1;
}

建议使用两个快捷值:auto和none。
auto等同于1 1 auto,即占满额外空间并且可缩放。
none等同于0 0 auto,即不占额外空间并且不可缩放。

6. align-self

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

div{
    align-items: flex-start;
}
item{
    align-self: flex-end;
}
align-self.png

该属性除了默认值auto之外,其他属性值都和align-items属性一致

上一篇 下一篇

猜你喜欢

热点阅读