Flex 弹性布局总结

一. Flex 弹性布局简介


1. CSS 的布局模式

  • CSS 拥有多种的布局模式,以应对各种场景下的位置关系
  • CSS 主要的布局模式有:
    • 块布局
    • 行内布局
    • 表格布局
    • 定位布局
    • 浮动布局
    • 媒体查询
    • Flex 弹性布局
    • Grid 网格布局

2. Flex 弹性布局概念

  • 弹性布局是指通过调整其内元素的宽高,从而在任何显示设备上实现对可用显示空间最佳填充的能力
  • 弹性容器扩展其内元素来填充可用空间,或将其收缩来避免溢出

二. Flex 弹性布局实战


1. 相关术语

Flex 弹性布局相关术语

2. 弹性容器

  • 使用 Flex 弹性布局需要定义一个容器,表明该容器内部使用 Flex 弹性布局
.box { display: flex; }
.box { display: inline-flex; }
  • 设置 Flex 布局以后,子元素的 flexclearvertical-align 属性将会失效

3. 弹性项目

  • 弹性容器的每个子元素都称为弹性项目
  • 弹性容器直接包含的文本将被包裹成匿名弹性单元

4. 定义主轴与换行

  • 使用 flex-direction弹性容器 中定义 Flex 弹性布局的主轴以及主轴方向
.box { flex-direction: row ( default ) | row-reverse | column | column-reverse ; }
row(默认):主轴为水平,方向为从左至右

row-reverse:主轴为水平,方向为从右至左

column:主轴为垂直,方向为从上至下

column-reverse:主轴为垂直,方向为从下至上
  • 使用 flex-wrap弹性容器 中定义当 弹性项目 溢出时该如何换行
.box { flex-wrap: nowrap ( default ) | wrap | wrap-reverse ; }
nowrap(默认):不换行,将会拉伸弹性项目

wrap:正常换行

wrap-reverse:溢出的部分在反方向换行
  • 使用 flex-flow 属性在 弹性容器 上同时定义 flex-directionflex-wrap 属性
.box { flex-flow: <flex-direction> <flex-wrap> ; }

5. 弹性项目的排布

  • 使用 justify-content 属性在 弹性容器 上定义在当前行上,弹性项目 沿主轴如何排布
.box { justify-content: flex-start ( default ) | flex-end | center | space-between | space-around ; }
flex-start(默认):左对齐

flex-end:右对齐

center:居中

space-between:两端对齐,项目之间的间隔都相等

space-around:分散对齐,项目两侧的间隔相等
  • 使用 align-items 属性在 弹性容器 上定义在当前行上,弹性项目 沿侧轴如何排布
    • 如果 弹性项目 具有实际高度,默认的排布方式为 flex-start
    • 如果 弹性项目 未设置高度或设为 auto,默认的排布方式为 stretch
.box { align-items: flex-start | flex-end | center | baseline | stretch ; }
flex-start:按侧轴的起点对齐

flex-end:按侧轴的终点对齐

center:按侧轴的中点对齐

baseline:按弹性项目第一行文字的基线对齐

stretch:弹性项目将会占满整个弹性容器的高度
  • 使用 align-content 属性在 弹性容器 上定义在多个主轴的情况下,弹性项目 在侧轴上如何排布
.box { align-content: flex-start | flex-end | center | space-between | space-around | stretch ; }
flex-start:按侧轴的起点对齐

flex-end:按侧轴的终点对齐

center:按侧轴的中点对齐

space-between:按侧轴两端对齐,轴线之间的间隔平均分配

space-around:按侧轴分散对齐,每根轴线的两侧间隔都相等

stretch:弹性项目在每个轴上平均占满整个侧轴

6. 弹性项目的顺序

  • 使用 order 属性在 弹性项目 上定义 弹性项目 的顺序
.flex-item { order: <integer>; } // default: 0
括号内的值为弹性项目的 order 属性值

7. 弹性项目的放大比例

  • 使用 flex-grow 属性在 弹性项目 上定义 弹性项目 的放大比例
  • flex-grow 属性的默认值为 0,即如果存在剩余空间,也不会放大
  • 弹性项目将按照各自的 flex-grow 属性值成比例的放大
.flex-item { flex-grow: <number>; } // defalut: 0
  • 括号内表示弹性项目 flex-grow 属性的值
    按照 0:2:1 放大

    按照 1:1:2 放大

8. 弹性项目的缩小比例

  • 使用 flex-shrink 属性在 弹性项目 上定义 弹性项目 的缩小比例
  • flex-shrink 属性的默认值为 1,即如果空间不足,该弹性项目将会缩小
  • 弹性项目将按照各自的 flex-shrink 属性值成比例的缩小
.flex-item { flex-shrink: <number>; } // default: 1
按照 0:1:1 缩小

按照 2:1:2 缩小

9. 弹性项目的初始大小

  • 使用 flex-basis 属性在 弹性项目 上定义 弹性项目 在主轴方向上的初始大小
  • flex-basis 属性会根据当前的主轴相应覆盖 弹性项目heightwidth 属性
.flex-item { flex-basis: <length> | auto ; } // default: auto

10. 弹性项目的放大缩小和大小的简写

  • 使用 flex 属性在 弹性项目 上定义 flex-growflex-shrinkflex-basis 属性的简写
.flex-item { flex: <flex-grow> <flex-shrink> <flex-basis> ; }

11. 单个弹性项目在侧轴的排布方式

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

推荐阅读更多精彩内容

  • Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,...
    xiaotao123阅读 1,741评论 0 1
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,460评论 0 6
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,444评论 0 26
  • 作者: 阮一峰日期: 2015年7月10日原文链接:http://www.ruanyifeng.com/blog/...
    Mike_Gu阅读 975评论 0 6
  • 一别文殊五台后 四时之景便不同 笑谈向来伶仃苦 晏飨轮回无名病几回茶 几回梦 几回梦醒一杯茗; 春舞芭蕾舞...
    微_efee阅读 268评论 0 0