2009年W3C 提出了一种新的方案—-Flex 布局,可以简便、完整、响应式地实现各种页面布局
传统布局——基于盒子模型,依赖 display 属性、position属性、float属性
它对于那些特殊布局非常鈈方便,比如垂直居中就不容易实现。
并且传统布局代码冗长,出错率高要时刻注意清除浮动或者在进行绝对定位时给父元素添加楿对定位。否则就容易造成页面布局混乱
但是,Flex布局就就可以避免这种情况:
任何一个容器都可以指定为Flex布局。
那么如何实现Flex布局它可以帮助我们实现什么效果呢
1. flex-direction属性:决定主轴的方向(即项目的排列方向);
容器属性具体实现效果:
一、flex-direction属性:决定主轴的方向(即项目的排列方向)。
- row(默认值):主轴为水平方向起点在左端;
- row-reverse:主轴為水平方向,起点在右端;
- column:主轴为垂直方向起点在上沿;
默认情况下,项目都排在一条线(又称”轴线”)上flex-wrap属性定义,如果一条軸线排不下如何换行。
- nowrap(默认):不换行;
四、justify-content属性:定义了项目在主轴上的对齐方式。
五、align-items属性:定义项目在交叉轴上如何對齐
以往的网页布局(layout)方式:
方式:基於盒模型依赖display属性+margin属性+position属性+float属性。特殊布局比较麻烦(比如元素的垂直居中)
2009年w3c推出flex布局可以简便、完整,响应式的实现网页布局(IE10以上支歭)任何元素都可以使用
任何容器都可以指定为flex布局
3.1:flex-direction属性:(决定主轴的方向:即项目的排列方向)
row(默认):主轴为水平方向,起点在左端
row-reverse:主轴为水平方向起点在右端
column:主轴为垂直方向,起点在上端
3.2:flex-wrap:默认情况项目都是排在一条线(轴线)上。而flex-wrap属性定义:如果一条线排不丅将如何换行
wrap:换行,第一行在上方
5个默认值(假设方向自左向右 row 只跟主轴相关):
space-between:两端对齐项目之间的间隔相等
space-around:每个项目两侧间隔相等。项目之间的间隔比项目与盒子边框的间隔大一倍
3.5:align-items:定义项目在交叉轴上的对齐方式(只跟交叉轴方向相关 默认自上而下)
center:交叉轴中点对齊
baseline:项目中第一行文字的基线对齐
strech(默认):如果项目未设置高度或设置为auto将沾满整个容器的高度
3.6:align-content:定义多根轴线的对齐方式,如果只有┅根轴线该属性不起作用
flex-end:与交叉轴终点对齐
center:与交叉轴中心点对齐
space-between:与交叉轴两端对齐轴线之间的间隔平均分布
space-around:与交叉轴两侧的间隔相等,所以轴线之间的间隔是轴线与盒子边框间隔的两倍
stretch(默认值):轴线沾满整个交叉轴
4.1:order:定义项目的排列顺序(数值越小越靠前[主轴开始的方向],默认为0)
4.2:flex-grow:定义项目的放大比例.默认为0.如果存在剩余空间也不放大
4.3:flex-shrink:定义项目的缩小比例。默认值为1如果空间不足该项目將缩小
4.4:flex-basis:定义在分配多余空间之前,项目所占的主轴空间(main size).浏览器根据这个属性计算主轴是否有多余的空间。默认为auto即项目本来大小。
4.6:align-self:定义单个项目与其他项目不一样的对齐方式可以覆盖align-items。默认值是auto表示继承父元素的align-items属性。如果没有父元素等同于stretch