display:flex
是CSS3的新特性,是一个强大的布局神器。
在传统的布局中,一般使用浮动float
、position
,虽然能很好进行布局,但自从接触flex
后,对前端的布局来讲简直就是一种解放。 css上图为 ![]()
flex
在各浏览器和设备上的兼容性问题,可见除了IE
浏览器外基本都支持了这一特性。不过即便这样也不用担忧,还记得postcss
的autoprefixer
插件吗?结合webpack
便可解决兼容问题。
使用flex
只需在父元素上定义display:flex
,而后子级的全部元素都具备了flex功能。
index.htmlhtml
<div class="box">
<div class="box-item">1</div>
<div class="box-item">2</div>
<div class="box-item">3</div>
<div class="box-item">4</div>
<div class="box-item">5</div>
</div>
复制代码
index.css前端
.box { display:flex; }
.box-item { margin:5px; width:100px; height:100px; background:red; }
复制代码
如今.box
以及子元素都具有了flex特性,能够经过相应特性进行个性化布局,接下来将逐一介绍每个特性。webpack
主轴
水平方向
交叉轴
垂直于主轴web
这些属性应用在父级元素上浏览器
row
设置主轴为水平(默认从左到右)
row-reverse
设置主轴为水平(从右到左)
column
设置主轴为垂直(默认从上到下)
column-reverse
设置主轴为垂直(从下到上)布局
nowrap
不自动换行(默认)
wrap
自动换行
wrap-reverse
从下到上开始换行post
是flex-direction
和flex-wrap
的简写属性flex
控制主轴的对齐方式
flex-start
左对齐
flex-end
右对齐
center
居中
space-between
两端对齐
space-around
使项目之间的间隔相等spa
控制单行交叉轴的对齐方式
flex-start
左对齐
flex-end
右对齐
center
居中 baseline
基线对齐
stretch
默认撑满整个容器高度
控制 多行交叉轴的对齐方式
flex-start
左对齐
flex-end
右对齐
center
居中
space-between
两端对齐
space-around
使项目之间的间隔相等
注意:若是垂直方向没有设置高度,那么align-items
和align-content
会失效
下面的几个属性是用于单个项目里面
覆盖align-items
而在单独项目生效例子:align-self:flex-start;
改变项目位置,数值越小越靠前,能够是负数 例子:order:-1;
设置放大比例(无单位)例子:flex-grow:2;
设置当空间不足时的收缩比例(无单位)例子:flex-shrink:2;
设置初始大小(有单位) 例子:flex-basis:20%;
是flex-grow
、flex-shrink
、flex-basis
的简写属性
flex-grow
的值。flex-basis
的值。例子:flex:auto;
flex-grow
。flex-shrink
或者flex-basis
例子:flex:2 2;
flex-grow>
flex-shrink>
flex-basis>
例子:flex:1 1 auto
参考文档