layout (flex)

flex 之前主要使用:

  • normal flow
  • float + clear
  • position relative + absolute
  • display inline-block
  • 负 margin

flex 布局

  1. 块级布局侧重垂直方向、行内布局侧重水平方向,flex布局是与方向无关的
  2. flex布局可以实现空间自动分配自动对齐flexible:弹性、灵活)
  3. flex适用简单的线性布局,更复杂的布局要交给grid布局

flex container


属性 解释
flex-direction 方向
flex-wrap 换行
flex-flow 上面两个的简写
justify-content 主轴方向对齐方式
align-items 侧轴对齐方式
align-content 多行/列内容对齐方式(用的较少)

1. flex-direction:

规定灵活项目的方向

描述
row 默认值。灵活的项目将水平显示,正如一个行一样
row-reverse 与 row 相同,但是以相反的顺序
column 灵活的项目将垂直显示,正如一个列一样
column-reverse 与 column 相同,但是以相反的顺序
initial 设置该属性为它的默认值
inherit 从父元素继承该属性

2. flex-wrap:

规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向

描述
nowrap 默认值,规定灵活的项目不拆行或不拆列
wrap 规定灵活的项目在必要的时候拆行或拆列
wrap-reverse 规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序
initial 设置该属性为它的默认值
inherit 从父元素继承该属性

3. flex-flow:

一个简写的方式

  • 第一个值为:flex-direction
  • 第二个值为:flex-wrap

4. justify-content

主轴方向对齐方式

  • flex-direction: row;时,主轴为X方向
  • flex-direction: column;时,主轴为Y方向
描述
flex-start 默认值,左对齐
flex-end 右对齐
center 居中
space-between 两端对齐,项目之间的间隔都相等
space-around 每个项目两侧的间隔相等。
所以,项目之间的间隔比项目与边框的间隔大一倍

5. align-items:

侧轴对齐方式

描述
stretch 默认值,如果项目未设置高度或设为auto,将占满整个容器的高度
flex-start 侧轴的起点对齐
flex-end 侧轴的终点对齐
center 侧轴的中点对齐
baseline 项目的第一行文字的基线对齐

6. align-content

多行/列内容对齐方式(用的较少)

描述
stretch 默认值,轴线占满整个侧轴
flex-start 与侧轴的起点对齐
flex-end 与侧轴的终点对齐
center 与侧轴的中点对齐
space-between 与侧轴两端对齐,轴线之间的间隔平均分布
space-around 每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍

flex item


属性 描述
flex-grow 增长比例(空间过多时)
flex-shrink 缩小比例(空间不够时)
flex-basis 默认大小(一般不用)
flex 上面三个的缩写
order 顺序(代替双飞翼)
align-self 自身的对齐方式

1. flex-grow

flex-grow属性dinginess项目的放大比例,默认为0,即如果存在剩余空间,也不放大

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍

http://js.jirengu.com/qunaf/1/edit?css,output

2. flex-shrink

flex-shrink属性定义了项目的缩小比例,默认为1,即若谷空间不足,该项目将缩小

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小

负值对该属性无效

http://js.jirengu.com/qunaf/2/edit?css,output

3. flex-basis

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主奏是否多余空间。它的默认值为auto,即项目的本来大小

它可以设为跟widthheight属性一样的值(比如200px),则项目占据固定空间

http://js.jirengu.com/qunaf/3/edit?css,output

4. flex

flex属性是flex-growflex-shrink,和flex-basis的简写,默认值为0 1 auto。后面两个属性可选

该属性有两个快捷值:auto1 1 auto)和 none(0 0 auto

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值

5. order

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0

css改变内容的排序

http://js.jirengu.com/qunaf/4/edit?css,output

6. align-self

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

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch
}

该属性可能取 6 个值,除了auto,其他都与align-items属性完全一致

http://js.jirengu.com/qunaf/5/edit?css,output

简单使用


参考


阮一峰 flex布局

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容