Flexbox

flex box

display: flex | inline-flex

定义了一个flex容器; 内联或块取决于给定的值。它为所有直接的子元素提供了一个弹性环境。

.container{
    dispaly: flex | inline-flex;
}

flex-direction: row | row-reverse | column | column-reverse

建立了主轴,从而定义了flex项目放置在flex容器中的方向。Flexbox是单向布局概念。将flex项目视为主要布置在水平行或垂直列中。

  • row 浏览器中默认, 主轴方向 从左到右 默认不换行
  • row-reverse 反转 row 排列
  • column 侧轴方向 从上到下
  • column-reverse 反转 column 排列
.container{
    flex-direction: row | row-reverse | column | column-reverse 
}

flex-wrap: nowrap | wrap | wrap-reverse

默认情况下,flex项目将全部尝试适合一行(默认情况下不换行)。你可以改变它,并允许项目根据需要用这个属性进行换行。

  • nowrap 默认 不换行(子元素可能会溢出)
  • wrap flex项目将从上到下成多行(flex 子元素溢出的部分会被放置到下一行)
  • wrap-reverse 反转 wrap 排列
.container{
    flex-wrap: nowrap | wrap | wrap-reverse
}

flex-flow: <‘flex-direction’> || <‘flex-wrap’>

这是一个简写flex-directionflex-wrap属性,它们一起定义了flex容器的主轴和侧轴。默认是row nowrap

.container{
    flex-flow: <‘flex-direction’> || <‘flex-wrap’>
}

justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly

定义了沿主轴的对齐。当一条线上的所有flex项目都不灵活或灵活,但达到其最大尺寸时,它有助于分配剩余空间。当物品溢出时,它也对物品的排列起到一定的控制作用。

  • flex-start 项目从flex盒子的起始位置排列
  • flex-end 项目从flex盒子的结束位置排列
  • center 项目沿着flex盒子向行中间对齐(沿主轴居中对齐)
  • space-between 项目均匀分布在行中; 第一项是在起始行,最后一行是最后一行
  • space-around 物品均匀分布在线上,周围有相同的空间。请注意,视觉上空间不相等,因为所有物品在两侧都有相同的空间。第一个项目将在容器边缘有一个空间单位,但下一个项目之间有两个空间单元,因为下一个项目有其自己的间距
  • space-evenly 项目是分布式的,以便任何两个项目之间的间距(以及到边缘的空间)相等
.container{
    justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
}

align-items: flex-start | flex-end | center | baseline | stretch

定义了flex项目沿当前行的侧轴放置的默认行为。可以将其视为justify-content侧轴(垂直于主轴)的版本。

  • flex-start 项目侧轴上边沿对齐
  • flex-end 项目侧轴下边沿对齐
  • center 项目侧轴居中
  • baseline 项目基线对齐
  • stretch 默认 拉伸填充容器
.container{
    align-items: flex-start | flex-end | center | baseline | stretch
}

align-content: flex-start | flex-end | center | space-between | space-around | stretch

当侧轴上有额外的空间时,这会将flex容器的按justify-content对齐,类似于如何在主轴内对齐各个项目。
注意:只有一行是弹性项目时,此属性不起作用

  • flex-start 各行向flex容器的起始位置对齐
  • flex-end 各行向flex容器的结束位置对齐
  • center 各行向flex容器的中间对齐
  • space-between 各行在flex容器中平均分布。如果剩余的空间是负数或flex容器中只有一行,该值等效于'flex-start'。在其它情况下,第一行的侧轴起始边界紧靠住flex容器的侧轴起始内容边界,最后一行的侧轴结束边界紧靠住flex容器的侧轴结束内容边界,剩余的行则按一定方式在flex窗口中排列,以保持两两之间的空间相等
  • space-around 各行在flex容器中平均分布,两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或flex容器中只有一行,该值等效于'center'。在其它情况下,各行会按一定方式在flex容器中排列,以保持两两之间的空间相等,同时第一行前面及最后一行后面的空间是其他空间的一半。
  • stretch 拉伸填充容器
.container{
    align-content: flex-start | flex-end | center | space-between | space-around | stretch
}

order: <integer>

默认情况下,flex项目按源代码顺序排列。但是,该order属性控制它们在flex容器中的显示顺序。
order属性用于更改在主轴方向上排列顺序。
order数值越小,排列越靠前,默认为0,可以为负数。

.item {
  order: <integer>; /* default is 0 */
}

flex-grow:<number>

定义了Flex项目在必要时增长的能力。它接受作为比例的无单位价值。它规定了该项目应该占用的flex容器内的可用空间量。
如果所有项目都flex-grow设置为1,则容器中剩余的空间将平均分配给所有子元素。如果其中一个元素的值为2,则剩余空间将占用其他空间的两倍。
注意:负数无效, 为0时不伸缩

.item{
    flex-grow: <number> /*default 0 */
}

flex-shrink: <number>

定义了flex项目在必要时收缩的能力。
注意:负数无效

.item{
    flex-shrink: <number>; /* default 1 */
}
.container_8{
    display: flex;
    width: 300px;
}
.container_8 .flex_item{
    width: 100px;
    height: 100px;
}
.container_8 .flex_item:nth-child(1){
    flex-shrink: 0;
}
.container_8 .flex_item:nth-child(2){
    flex-shrink: 2;
}
.container_8 .flex_item:nth-child(3){
    flex-shrink: 2;
}
.container_8 .flex_item:nth-child(4){
    flex-shrink: 2;
}

上例中 shrink的总数值为 6 , .container_8 .flex_item:nth-child(1)的shrink值为0, 则其宽度为 100px。而其他三个元素的宽度为(300 - 100) / 6 * 2 = 66.67px

flex-basis: <length> | auto

这将在分配剩余空间之前定义元素的默认大小。它可以是一个长度(例如20%,5rem等)或关键字。该auto关键字的意思是“看看我的宽度或高度属性”(暂时由main-size关键字完成,直到弃用)。该content关键字的意思是“它根据项目的内容大小”,此关键字不能很好地支持,所以很难进行测试,并更难知道它的兄弟max-contentmin-contentfit-content
如果设置为0,则不会考虑内容的额外空间。如果设置为auto,多余空间将根据其flex-grow值分配。

.item{
    flex-basis: <length> | auto; /* default auto */
}

flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

这是速记flex-grow, flex-shrinkflex-basis组合。第二个和第三个参数(flex-shrinkflex-basis)是可选的。默认是 0 1 auto

.item{
    flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

align-self: auto | flex-start | flex-end | center | baseline | stretch

允许align-items为各个flex项目覆盖默认对齐方式(或由其指定的对齐方式).
请注意floatclear并且vertical-align对flex项目没有影响。

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
.container_11{
    display: flex;
    align-items: flex-start;
    height: 150px;
}
.container_11 .flex_item{
    width: 100px;
    height: 100px;
}
.container_11 .flex_item:nth-child(1){
    align-self: center
}
.container_11 .flex_item:nth-child(2){
    align-self: flex-end;
}

by @shine(xiaoshaoqq@gmail.com)

date: 2018-03-06

github地址

example

参考:Flexbox完整指南

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,395评论 0 26
  • 前言 FlexBox是css3的一种新的布局方式,天生为解决布局问题而存在的它,比起传统的布局方式,我们使用Fle...
    zevei阅读 1,410评论 23 3
  • 简书的Markdown貌似不支持插入iframe,所以文章里的JSFiddle示例都改做截图了,如果有需要可以点击...
    kangflict阅读 1,109评论 2 8
  • title: flex布局date: 2017-07-07 14:13:33tags: css笔记 flexbox...
    Gary23阅读 1,524评论 0 0
  • FlexBox 布局基本用法 1、什么是FlexBox Flexbox是Flexible Box的缩写,意为'弹性...
    光强_上海阅读 13,250评论 3 27