CSS Flex布局属性整理
2017-05-19 17:11
190 查看
Flex布局
display: flex;将对象作为弹性伸缩盒展示,用于块级元素
display: inline-flex;将对象作为弹性伸缩盒展示,用于行内元素
注意兼容问题:
webkit内核浏览器应使用前缀
-webkit
IE浏览器,可以很好的兼容IE11+版本,对于IE10只有部分可以兼容,且使用时需增加
-ms,IE10浏览器中容器定义成弹性伸缩盒时,需使用
display: -ms-flexbox
示例的dom结构:
<div class="box"> <!--容器--> <div class="item">1</div> <!--子项--> <div class="item">2</div> <div class="item">3</div> </div>
基础样式设计:
.box { width: 200px; height: 200px; background-color: #58a; } .item { width: 50px; height: 50px; margin: 2px; background-color: #fb3; }
Flex 作用于Box容器上的6个属性介绍
1、flex-direction用于指定Flex主轴的方向,继而决定 Flex子项在Flex容器中的位置
取值:row | row-reverse | column | column-reverse
row:默认值,表示水平方向从左到右排列,此时水平方向轴线为主轴
row-reverse:与row相反
column:表示垂直方向从上到下排列,此时垂直方向轴线为主轴
column-reverse:与column相反
flex-direction四种取值的效果图如下:
row.png
column.png
2、flex-wrap
用于指定Flex子项是否换行
取值:nowrap | wrap | wrap-reverse
nowrap:默认值,表示不换行,Flex子项可能会溢出
wrap:表示换行,溢出的Flex子项会被放到下一行
wrap-reverse:表示反方向换行
flex-wrap三种取值的效果图如下:
wrap.png
从示例图中不难发现,换行以后两行之间产生了很大的间距,这个问题,在后面介绍的
align-content属性中可以得到很好的解决。
3、flex-flow
复合属性,是
flex-direction和
flex-wrap的简写属性,是用于指定Flex子项的排列方式
4、justify-content
用于指定主轴(水平方向)上Flex子项的对齐方式
取值:flex-start | flex-end | center | space-between | space-around
flex-start:默认值,表示与行的起始位置对齐
flex-end:表示与行的结束位置对齐
center:表示与行中间对其
space-between:表示两端对齐,中间间距相等。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于
flex-start
space-around:表示间距相等,中间间距是两端间距的2倍。要注意特殊情况,当剩余空间为负数或者只有一个项时,效果等同于
center
justify-content的前三种取值的效果图如下:
justify-content.png
justify-content取值为
space-between的效果图如下(注意特殊情况下效果等同于flex-start):
space-between.png
justify-content取值为
space-around的效果图如下(注意特殊情况下效果等同于center):
space-around.png
5、align-items
用于指定侧轴(垂直方向)上Flex子项的对齐方式
取值:stretch | flex-start | flex-end | center | baseline
stretch:默认值,当Flex子项未设置高度或者高度值为auto时,stretch起作用,将Flex子项高度设置为行高度。这里需要注意,在只有一行的情况下,行的高度为容器的高度,即Flex子项高度为容器的高度
flex-start:表示与侧轴开始位置对齐
flex-end:表示与侧轴的结束位置对齐
center:表示与侧轴中间对其
baseline:表示基线对齐,当行内轴与侧轴在同一线上,即所有Flex子项的基线在同一线上时,效果等同于
flex-start
align-items取值为
stretch的效果图如下:
stretch.png
align-items取值为
flex-start flex-end center的效果图如下:
align-items.png
align-items取值为
baseline的效果图如下:
baseline.png
6、align-content
该属性只作用于多行的情况下,用于多行的对齐方式
取值:stretch | flex-start | flex-end | center | space-between | space-around
stretch:默认值,当Flex子项未设置高度或者高度值为auto时,stretch起作用,将Flex子项高度设置为行高度。
flex-start:表示各行与侧轴开始位置对齐,第一行紧靠侧轴开始边界,之后的每一行都紧靠前面一行
flex-end:表示各行与侧轴的结束位置对齐,最后一行紧靠侧轴结束边界,之后的每一行都紧靠前面一行
center:表示各行与侧轴中间对其
space-between:表示两端对齐,中间间距相等。要注意特殊情况,当剩余空间为负数时,效果等同于
flex-start
space-around:表示各行之间间距相等,中间间距是两端间距的2倍。要注意特殊情况,当剩余空间为负数时,效果等同于
center
再次强调:该属性只作用于多行的情况,在只有一行的Flex容器上无效,另外该属性可以很好的处理,换行以后相邻行之间产生的间距。
align-content各个取值的效果图如下:
align-content.png
Flex 作用于子项上的6个属性介绍
1、order该属性用来指定Flex子项的排列顺序,数值越小,越靠前,可以为负数
取值:数值,默认值为0
2、flex-grow
用来指定Flex子项的扩展比例,不可以为负数,Flex容器会根据Flex子项设置的扩展比例作为比率来分配剩余空间
取值:数值,默认值为0,表示即使存在剩余空间,Flex子项也不会扩展
如下图中,按照1:3分配剩余空间:
grow.png
3、flex-shrink
用来指定Flex子项的收缩比例,不可以为负数,Flex容器会根据Flex子项设置的收缩比例作为比率来收缩各个Flex子项
取值:数值,默认值为1,表示所有子项在剩余空间为负数时,等比例收缩
注意:
flex-shrink只能在不换行的情况下使用
如下图中,按照1:3收缩:
shrink.png
4、flex-basis
用来指定Flex子项的占据的空间,不可以为负数
取值:auto | length | percentage | content
auto:默认值,计算规则:检索Flex子项是否设置了width值(或者height值,取决于flex-direction),如果设置了非auto的值,则使用width值(或者height值),若没有则使用content
length:用长度值定义宽度,不可为负数
percentage:使用百分比定义宽度,不可为负数
如下图中,为Item设置
flex-basis: 50%;,在按照1:3分配剩余空间:
grow.png
容器宽度为200px,Item1原始宽度为50px,设置
flex-basis: 50%;后宽度变成100px,扩展后宽度为110.5px;而Item2原始宽度为50px,扩展后为81.5px,比例正好是1:3
注意:
设置
flex-grow进行分配剩余空间,或者使用
flex-shrink进行收缩都是在flex-basis的基础上进行的;
当
flex-basis的值以及width(或者height)的值均为非auto时,
1)若content长度同时大于
flex-basis的值以及width(或者height)的值,此时以
flex-basis与width(或者height)中值大的为准 ,但是,如果子项设置了
overflow: hidden;或者
overflow: auto;,此时以
flex-basis值为准;
2)若content长度同时小于
flex-basis的值以及width(或者height)的值,此时以
flex-basis值为准;
3)若content长度小于
flex-basis的值,大于width(或者height)的值,此时以
flex-basis值为准;
4)若content长度大于
flex-basis的值,小于width(或者height)的值,此时以content自身长度值为准;
当width(或者height)的值为auto时,且内容的长度大于
flex-basis设置的值,此时以content自身长度值为准,且不能进行flex-shrink收缩。相反如果内容的长度小于
flex-basis设置的值,则会使用
flex-basis设置的值;
当存在最小值
min-width(
min-height)时,且
flex-basis的值小于最小值时,宽度以最小值为准,当
flex-basis的值大于最小值时,以
flex-basis的值为准
5、flex
复合属性,是
flex-grow、
flex-shrink和
flex-basis的简写属性,用来指定Flex子项如何分配空间
取值:none | 各拆分项属性
none:0 0 auto
auto:1 1 auto
1:1 1 0%
0 auto 或 initial:0 1 auto 即初始值
注意:
flex-grow:默认值为0,若省略则被默认为1
flex-shrink:默认值为1,省略时默认为1
flex-basis:默认值为auto,省略时默认为0%
6、align-self
用来单独指定某Flex子项的对齐方式
取值:auto | flex-start | flex-end | center | baseline | stretch
auto:默认值,查找父元素的
align-items值,如果没有则取值为
stretch
其他值同
align-items
如果想了解更多关于Flex布局的内容,可以查看Flex布局应用
相关文章推荐
- CSS flex 布局 一些基本属性应用
- QML笔记整理——元素、属性和布局
- 安卓布局属性整理
- CSS3 Flex布局整理(二)-容器属性
- Android 布局属性大全(未整理)
- Android布局设计属性整理
- CSS3 Flex布局整理(三)-项目属性
- android布局属性详解
- android布局属性详解
- 笔记整理 静态与非静态 继承哪一些 继承链 重写 属性方法重载 PDO
- android布局属性小结
- 关于相对布局RelativeLayout的各种属性介绍
- ExtJs学习系列之 FormPanel 布局:Ext中FormPanel面板的嵌套及控件属性赋值
- 进程地址空间的布局(整理)
- android布局应掌握的重点属性
- js DOM Element属性和方法整理
- html布局(position属性)和流
- Android使用后自定义控件如何在该布局文件以外动态的设置自定义控件的属性
- android布局及其常用属性
- DIVCSS网页布局常用的一些基础知识整理