[续更]一起来撸一下Flex布局里面的那些属性
Flex的全称是Flexible Box,意为弹性布局,用来为盒模型提供最大的灵活性。
Flex包含的属性有很多,每个属性又包含了许多不同意义的属性值···然而在实际开发中,能被我们临幸的可能也只是那么几个:
{
display: flex;
justify-content: center|flex-start...;
align-items: center|flex-start...;
flex-grow: auto...;
}
上面是一本正经的分割线!
一、Flex简介
任何一个容器都可以通过设置 display 为 flex/inline-flex 将其指定为Flex布局。对于设置了Flex布局的容器,子元素的 float、clear、vertical-align 属性将失效;但是,如果对这些子元素设置 position 定位,那么Flex属性的作用会失效,一张图说明他们的作用权重:

采用Flex属性布局的元素称为Flex容器,而其所有的子元素称为Flex项目。容器默认存在两根轴线:水平的主轴(main axis)和垂直的交叉轴(cross axis)。轴的起始和结束为止分别称作main/cross start和main/cross end。项目默认沿主轴排列,项目占据的轴的空间叫main/cross size。详见下图:

Flex布局元素分为Flex容器和Flex项目,因而有Flex容器属性和Flex项目属性的区分。
二、Flex容器属性
1. Flex的容器属性包括:
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
1.1 flex-direction
该属性定义了主轴的方向,即项目的排列方向。value的取值包括:row | row-reverse | column | column-reverse。其中 row 是默认值,表示水平方向排列(起点在左端); column 表示垂直方向(起点在顶端);带 -reverse 的值则表示反方向。用法及其效果图如下:
示例代码:
<div class="flex-box">
<div class="flex-item">item1</div>
<div class="flex-item">item2</div>
<div class="flex-item">item3</div>
</div>
.flex-box{
display: flex; /*定义为flex布局*/
flex-direction:row-reverse; /*主轴为水平方向,起点在右端*/
background:orange;
}
.flex-item{
margin:10px;
height:100px;
width:100px;
background: purple;
color:#fff;
}
示例效果:

1.2 flex-wrap属性
该属性定义项目是否换行以及如何换行。在默认情况下,项目都排在一条轴线上,如果一条轴线排不下,浏览器就根据这个属性的值对项目排列做相应调整。value的取值包括:nowrap | wrap | wrap-reverse,其中,nowrap 是默认值,不换行。用法及其效果图如下:
示例代码:
.flex-box{
flex-wrap: wrap;
}
示例效果:

说明:wrap 表示换行,第一行在上方。使用 row-reverse 换行时,第一行在下方,亦即图中item6会出现在第一行。
1.3 flex-flow属性
该属性是 flex-direction 和 flex-wrap 的简写形式,默认值为row nowrap。使用方式如下:
示例代码::
.flex-box{
flex-flow:colunm wrap;
}
1.4 justify-content属性
该属性定义了项目在主轴(main axis)上的对齐方式,value的取值包括:
- flex-start:默认值。轴的起始端对齐(main/cross start)
- flex-end:轴的终点端
- center:居中
- space-between:两端对齐,项目之间的间隔都相等。
- space-around:每个项目两侧的间隔相等。那么项目之间的间隔就是项目与边框之间的间隔的两倍。
用法及效果如下:


说明:这些属性对项目的作用是根据主轴的方向不同而改变的,如果将 direction 设置为 column,那么这些效果则表现在纵向。
1.5 align-items属性
该属性定义项目在交叉轴(cross axis)上的对齐方式。value的取值包括:
- flex-start:交叉轴的起点对齐
- flex-end:交叉轴的终点对齐
- center:居中
- baseline:以项目的第一行文字的基线对齐
- stretch:默认值,如果项目未设置高度或设为auto,那么项目将占满整个容器的高度。
效果如下:


1.6 align-content属性
该属性定义了多个轴线的对齐方式。value的取值包括:
- flex-start:与交叉轴的起点对齐
- flex-end:与交叉轴的终点对齐
- center:交叉轴上居中
- space-between:交叉轴上两端对齐,轴线之间的间隔两端分布
- space-around:每个轴线两侧的间隔都相等。那么,轴线之间的间隔是轴线与边框之间间隔的两倍
- stretch:默认值,轴线占满整个交叉轴
咦!怎么都这么熟悉呢?对比原来发现这个属性的取值是跟前两个属性的取值有很大相似的。但它们其的效果还是有区别的。看图:

对比下align-items里面的center,是不是发现不同呢?每一行项目之间的距离变小了!是变小了吗?其实是轴线居中了!在这里,因为项目的换行,形成了多条轴线,而align-content就是作用在轴线上的,所以它会让每一条轴线居中。而align-items是将所有的项目看做一个整体,即使项目换行,也是将整个项目看做是一条轴线,最后将这个整体居中。
三、Flex项目属性
1. Flex的项目属性包括:
- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
1.1 order属性
该属性定义项目的排列顺序,数值越小,排列越靠前,默认值为0。
示例代码:
<div class="flex-box">
<div class="flex-item">item1</div>
<div class="flex-item">item2</div>
<div class="flex-item">item3</div>
</div>
.flex-box{
background:orange;
display: flex; /*定义为flex布局*/
}
.flex-item{
margin:10px;
height:100px;
width:100px;
background: purple;
color:#fff;
}
div:first-child{
order:0; /*item1的序号为0*/
}
div:nth-child(2){
order:-1;
}
div:last-child{
order:2;
}
示例效果:

说明:在本例中没有设置flex-direction的属性,那么其值默认是row,你也可以尝试将其设置成column,那么flex项目则会根据order纵向排列。
1.2 flex-grow属性
该属性定义项目的放大比例,默认为0,即不作任何的放大。flex容器下的项目是根据这个值的比例对容器的剩余空间进行瓜分的。使用效果如下:

说明:在使用这个属性的时候,一般也最好不要对flex项目设置宽度/高度,否则会影响flex容器的比例分配。
1.3 flex-shrink属性
该属性定义了项目的缩小比例,默认为1,即项目缩小。使用效果如下:

说明:这里flex容器的宽度设置成600px,flex项目的宽度均为300px,margin:10px;在为item1分配完空间后,剩下的空间被后面两个项目按比例缩小分配。
1.4 flex-basis属性
该属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴(main asix)是否有多余空间。它的默认值为auto,即项目的原本大小。它换可以设置为跟width属性一样的值(eg: 100px),即项目占据固定空间(容器宽度不够自动被压缩)。使用效果如下:

说明:该属性的用法就像是使用width(flex-direction:row; 的时候)或heigh(direction为column的时候)属性那样,在容器宽度不够的时候,它会按照flex-shrink属性的默认值压缩项目。
1.5 flex属性
该属性是前三个属性:flex-grow、flex-shrink、flex-basis 的简写形式。默认值为0 1 auto,即不放大,自动缩小,后面两个属性值是可选项。该属性有两个快捷键值:auto(0 1 auto),none(0 0 auto)。建议优先使用这个属性,而不是单独写三个分离的属性。
1.6 align-self属性
该属性允许单个项目有与其他项目不一样的对齐方式。可覆盖作用在flex容器上的align-items属性。默认值为auto,表示继承父元素align-items属性,如果没有父元素,则等同stretch。value的取值包括:auto、flex-start、flex-end、end、baseline、stretch。该属性的取值除了auto之外,其他属性作用在该项目上的效果跟align-items作用在项目父元素(flex容器)上的效果是一样的,唯一不同的是:align-self仅对使用了该属性的项目产生效果,align-items是对所有的项目产生效果。
天下武功,唯快不破。Flex的优秀在于它的快捷,开发过程中使用Flex布局可以轻松地达到你想要的布局效果,方便快捷。尝试它并爱上它~
[续更]一起来撸一下Flex布局里面的那些属性的更多相关文章
- CSS3 Flex布局整理(三)-项目属性
一.Flex布局中 Flex Item属性控制,可以指定显示顺序.剩余空间的放大,缩小.交叉轴的排列 1.order:定义项目的排列顺序,数值越小,排列越靠前,默认为0.类似z-index 2.fle ...
- flex布局中父容器属性部分演示效果
如图可见flex的属性分为父容器和子容器的属性共12个.关于这些属性具体代表什么意思,网上有很多教程的文章,自觉不能写得比别人更好,所以这里主要写了一些例子关于父容器属性效果的演示,希望可以帮助大家理 ...
- CSS3 Flex布局整理(二)-容器属性
一.Flex容器属性介绍 1.flex-flow :水平或垂直方向上的流动方式,包裹处理,其中包括了flex-direction属性和flex-wrap属性. 2.justify-content:定义 ...
- 30分钟彻底弄懂flex布局
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布 ...
- 弄懂flex布局
目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布局以及它的好处,这里就不再赘述. 在这篇文章里,想说说flex布局的属性语法及其细节.那么网上也 ...
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- Flex布局 Flexbox属性具体解释
原文:A Visual Guide to CSS3 Flexbox Properties Flex布局官方称为CSS Flexble Box布局模型是CSS3为了提高元素在容器中的对齐.方向.顺序,甚 ...
- CSS flex 布局快速入门
以前已经学过flex了,一直没做笔记,现在做下笔记再回忆下. 首先,flex布局的迷之属性们,如果一知半解,机械记忆的话,那不到半个月基本忘光光.先感受一下这12个flex布局属性,是不是很“迷”人. ...
- flex布局使用
什么是flex布局 flex是flexible Box的缩写,意味"弹性盒子",用来为盒子状模型提供最大的灵活性 任何一个盒子都可以指定为flex布局 .box{ display: ...
随机推荐
- Linux平台下_tomcat的安装与优化
一.Tomcat介绍 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一 ...
- Java分层架构的使用规则
原文章引用地址:http://blog.csdn.net/ygzk123/article/details/7816511 三层结构的程序不是说把项目分成DAL, BLL, WebUI三个模块就叫三层了 ...
- php对比二个不同的二维数组
$diff_data = array_filter($data1, function($v) use ($data2) { return ! in_array($v, $data2);});
- 2018-1 WebStorm最新版本破解激活方法
在激活页面选择License Server,输入:http://idea.codebeta.cn,点击Activate即可激活. 如果失效用这个: http://idea.ibdyr.com
- PAT甲级——1011 World Cup Betting
PATA1011 World Cup Betting With the 2010 FIFA World Cup running, football fans the world over were b ...
- Tript协议|伯尔尼公约|著作权|立法宗旨|自动保护|著作权集体管理|
知识产权 国际条约: Tript协议是国际性公约,<与贸易有关的知识产权协定>(英文:Agreement on Trade-Related Aspects of Intellectual ...
- reviewer回信
收到reviewer回信之后的情况 Peer review其实是一个CA(质检)过程.文章投稿后的几种状态:Reject.resubmit和revise-and-resubmit. 收到回信之后,re ...
- 信息检索盛会 微软“领衔主演”——记ACM SIGIR 2013信息检索国际会议
微软"领衔主演"--记ACM SIGIR 2013信息检索国际会议" title="信息检索盛会 微软"领衔主演"--记ACM SIGIR ...
- python项目中对mysql数据库进行配置,并进行连接测试
在settings.py中配置mysql数据库进行相关配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME ...
- 深入JVM内核--常用JVM配置参数
Trace跟踪参数 -verbose:gc -XX:+printGC 可以打印GC的简要信息 [GC 4790K->374K(15872K), 0.0001606 secs] [GC 4790K ...