2020-03-15

CSS Flexbox

介绍

Flexboxcss3引入的新的布局方式,通过这种布局方式,可以很轻松地将多个元素以不同的方向或顺序进行对齐、排列。

Flexbox的主要思想是赋予容器的子元素扩展和收缩的能力,以最大化利用可使用的空间。

Flexbox一定程度上取代了浮动布局,并且代码的可读性和逻辑性也更好。

使用

要实现flex布局很简单,给一个容器赋予属性:display:flex,该容器就成为了一个flex容器,flex容器的直接子元素则会自动成为flex项目(flex items)。项目在容器内的排列方向称为主轴(main axis),而交叉轴(cross axis)则总是垂直于主轴。

avatar

属性

我们将flex布局的属性分为两大类:容器属性项目属性。顾名思义,容器属性是属于元素的display属性为flex的元素,项目属性flex项目的属性。

为了方便演示,以下属性会结合图片进行解释,我们先设计这样一个flex容器以及项目:

<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
    <div class="item">4</div>
    <div class="item">5</div>
</div>
.container {
    background-color: #ccc;
    padding: 10px;
    display: flex;
}

.item {
    background-color: #f1425d;
    padding: 30px;
    margin: 30px;
    color: #FFFFFF;
    font-size: 40px;
}
avatar

由于属性默认值的原因,在我们将容器设为flex的时候,项目就已经获取了项目属性的默认值,所以会如图所示排列。

容器属性

flex-direction

该属性定义了主轴的方向。

可选值有:

  • row: 默认值,主轴的方向为从左向右
  • row-reverse: 主轴的方向为从右向左
  • column: 主轴的方向从上到下
  • column-reverse: 主轴的方向为从下到上
avatar
avatar
avatar
avatar

如图,我们通过改变flex-direction的值改变了主轴的方向,因此各个项目的排列方式均发生了变化。其实项目的位置也同时受到了justify-content的默认值flex-start的影响,所以每个项目都总是在主轴的起点上对齐。

flex-wrap

该属性定义在容器空间不足的时候,项目是否自动换行。

可选值有

  • nowrap: 默认值,不换行
  • wrap: 换行,方向为从上到下
  • wrap-reverse: 换行,方向为从下到上
justify-content

该属性定义项目在主轴上应该如何对齐

可选值有

  • flex-start: 默认值,项目在主轴的起点对其
  • flex-end: 项目在主轴的终点对齐
  • center: 项目在主轴的中心对齐
  • space-between: 将容器的剩余空间平均分布在项目与项目之间
  • space-around: 将容器的剩余空间分配在每个项目的左右两边
  • space-evenly: 让项目之间以及第一个项目的左边和最后一个项目的右边的空间相同
align-items

定义项目在交叉轴上如何对齐

  • stretch: 默认值,项目在交叉轴上延伸
  • flex-start: 项目在交叉轴的起点对齐
  • flex-end: 项目在交叉轴的终点对齐
  • center: 项目在交叉轴的中心对齐
  • baseline: 项目基于交叉轴的基线对齐
align-content

该属性在项目多于一行的话才起作用,定义这些行在有剩余空间的情况下在交叉轴上如何对齐。

  • stretch
  • flex-start
  • flex-end
  • center
  • space-between
  • space-around

项目属性

align-self

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

  • auto
  • stretch
  • flex-start
  • flex-end
  • center
  • baseline
order: <integer>

默认值0,定义该项目相对于其他项目的摆放顺序,默认值为0,拥有较小值order属性的项目将放在较大值的前面。

flex-grow: <interger>

默认值0,定义项目占据剩余空间的能力。

flex-shrink: <integer>

默认值1,定义项目在剩余空间不足时的收缩能力。

flex-basis: <length>

默认值auto,项目的宽度

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

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,360评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,438评论 0 6
  • 一、Flex 布局是什么? CSS3引入了一种新的布局模式——Flexbox布局,即伸缩盒模型布局(Flexibl...
    侠客有情剑无情QAQ阅读 5,705评论 7 94
  • Flex 布局语法教程 分类编程技术 网页布局(layout)是CSS的一个重点应用。 布局的传统解决方案,基于盒...
    沧海寒流阅读 393评论 0 1
  • 第一章 复杂选择器 一、兄弟选择器:具备相同父元素的元素 ① 特点:1、通过位置关系来匹配元素(平级关系) ...
    fastwe阅读 712评论 0 0