什么是弹性盒子?

弹性盒子是 CSS3 的一种新的布局模式。相对于传统的依赖于display+position+float的布局方式,弹性盒子更加以有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

如何开启?

任何一个容器都可以指定为Flex布局,你需要的仅仅是增加一行

display: flex;

如果是行内元素的话则是

display: inline-flex;

注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

相关概念

被指定为Flex的元素称之为"容器",该容器当中的子元素则是会成为它的“项目”,一个元素可以既是容器也是项目。

如上图所示,一个容器当中存在两根轴,默认为主轴的水平轴,默认为交叉轴的垂直轴。默认情况下容器当中的项目是沿着主轴方向排列的。

容器属性

  • flex-direction: 该属性决定主轴的方向

属性值为:row(默认)、row-reverse、column、column-reverse,分别对应的主轴以及起点为左、右、上、下。

  • flex-wrap: 是否换行

属性值为:nowrap(默认)、 wrap、wrap-reverse,分别对应不换行,换行,换行且第一行放在下面。

  • justify-content: 主轴上对齐方式

属性值为:flex-start(默认)、flex-end、center、space-between、space-around,分别对应为起点对齐、终点对齐、居中对齐,两端对齐,左右间隔相等对齐(可以看做左右设置不重叠的margin)。

  • align-items: 交叉轴对齐方式

属性值为:flex-start、flex-end、center、baseline、stretch(默认),分别对应起点、终点、居中、第一行文字基线、占满容器高度(默认,未设置高度或者auto情况下)

  • align-content: 多轴线对齐方式

    注意:只有一根轴的时候无效,也就是单行项目是无效的。

    注意:这里的多轴线是多行的意思,不是指代垂直水平两根轴。

属性值为:flex-start、flex-end、center、space-between、space-around、stretch(默认),分别对应交叉轴的起点、终点、居中、两端、相同间隔、占满(可以看做平均分配了,但是项目设置宽高的话,空间上会平均分配,但是项目本身宽高不会变)

项目属性

  • order: 排列顺序,越小的排前面,默认为0
  • flex-grow: 放大比例,默认为0,如果所有都为1,等分剩余空间
  • flex-shrink: 缩小比例,默认为1
  • flex-basis: 设置固定宽高,可以占据固定空间,默认auto
  • flex:flex-grow flex-shrink flex-basis的简写,后两个可选
  • align-self: 项目单独对齐方式(脱离大部队啊!)可覆盖align-items属性

实用Flex应用

应用场景:

1 浏览器的视口空间不足,要求视口中的特定块要按照比例进行缩放

2 应对一些布局是要以基准线(baseline)对齐的特殊布局方法

3 需要模块垂直居中

  • 基本网格布局

    也就是每一行自适应且等分空间,通过项目的flex属性设置
flex: 1;
  • 百分比布局

    同样是利用项目的flex属性,为第三个值设定百分比占据固定百分比。
flex: 0 0 20%;
  • 圣杯布局

    传统圣杯布局实现麻烦,使用flex后仅仅需要改变nav栏目的order比main小就行
order: -1;

参考

Flex 布局教程:语法篇

Flex 布局教程:实例篇

W3C-CSS3教程

Flex布局及其应用的更多相关文章

  1. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  2. Flex 布局教程:实例篇

    该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我的主要参考资料是Landon Schropp的文章和Solved ...

  3. 在移动端中的flex布局

    flex布局介绍: flex布局很灵活, 这种布局我们也可以称之为弹性布局,  弹性布局的主要优势就是元素的宽或者高会自动补全; flex布局实例: 比如有两个div,一个div的宽度为100px, ...

  4. css flex布局

    关于flex布局的一些简单用法 效果(下图) 实现代码: <!--html--> <div class="wrap"> <div class=&quo ...

  5. FLEX布局的一些问题和解决方法

    前言 露珠最近研究了一下flex的布局方式,发现项w3c推出的这套布局解决方案对于日益复杂的前端开发布局来说是确实是一利器,并且在不同的屏幕上实现了真正的响应式布局:不再单纯地依赖百分比和float的 ...

  6. CSS之flex布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. flex布局示例

    来自:授权地址 作者:水牛01248 几个横排元素在竖直方向上居中 display: flex; flex-direction: row;//横向排列 align-items: center;//垂直 ...

  8. 【转】Flex 布局语法教程

    网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...

  9. [flex布局]-flex教程

    简介:2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. Flex布局是什 ...

  10. flex布局

    一,啥是flex? 1.Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局. .box{ displa ...

随机推荐

  1. Golang panic用法

    Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱.因为开发者很容易滥用异常, ...

  2. Q:链表的倒数第K个元素

    问题:如何得到链表中的倒数第k个元素?   一种简单的思路是遍历链表一遍,并统计出链表中节点的数目,然后计算出倒数第k个元素到链表头节点的元素的距离,然后得到对应的结果.但是,我们能否有一种更加简便的 ...

  3. 通过UA判断,对滚动条样式进行不同的操作

    浏览器滚动条的默认样式比较丑,有些情况下,又不能直接overflow:hidden掉. 本文阐述如何通过 document.styleSheets[0].insertRule 简单的实现pc端和移动端 ...

  4. php5.5过渡--mysql连接

    以前: // $conn=mysql_connect("localhost","root","");// $db=mysql_select_ ...

  5. 如何选择分布式事务形态(TCC,SAGA,2PC,基于消息最终一致性等等)

    各种形态的分布式事务 分布式事务有多种主流形态,包括: 基于消息实现的分布式事务 基于补偿实现的分布式事务 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 这些形 ...

  6. linux客户端打印报表时操作系统的配置

     报表打印是用applet方式操作的,所以客户端要有jre环境.如果客户端是windows系统的话,安装jre环境比较方便:如果客户端是linux系统的话,即使服务器端reportConfig.x ...

  7. sql 脚本 oracle scott 用户的四张表导入 mysql 中

    /* 要先删除emp表,不能先删除dept表,因为dept有一个外键关联emp表*/drop TABLE emp;drop TABLE dept; drop TABLE salgrade;drop T ...

  8. CentOS6.4 下安装 MySql5.5.13

    1.卸载系统自带的MySql 1.1.查看该操作系统上是否已经安装了mysql数据库 [root@xhTest-1 ~]# rpm -qa | grep mysql 1.2.删除原mysql数据库 1 ...

  9. ASP.NET 通过配置hiddenSegment禁止目录下资源通过Url形式访问

    根据默认的ASP.NET配置,App_Data下的资源是禁止通过Url形式直接访问的,在实际开发中,可能也会有这样的需求,比如某些是系统资源目录,该目录下的资源也需要像App_Data目录一样禁止访问 ...

  10. Entity Framework的几种初始化器

    Database.SetInitializer<TContext>(new NullDatabaseInitializer<TContext>()); Database.Set ...