flex布局是w3c在2009年提出来的,它很明显的特征就是简便和响应式,所以它在手机移动端应用比较广泛,现在所有的浏览器都很好地支持着flex,不存在兼容性问题,但是flex布局适合那种简单的线性布局,传统的浮动,绝对定位等方法在处理一些复杂问题时依然是首选。
flex布局特别易于学习。实现它只需搞懂两个地方:container和item。
1.flex父容器
![](https://img.haomeiwen.com/i8115593/057d99b603e54b23.jpg)
给一个元素的设置
display:flex;
就创建好了flex父容器,如上图。它内部的元素自动成为“flex item”。flex布局有两个最重要的概念,如果理解清楚了,那么flex布局就会了。就是主轴(main axis)和交叉轴(cross axis)。
flex父容器可以设置六个属性:
- flex-direction
这个是设置主轴方向用的,可以横或竖,横竖里分正反。一旦设置了主轴,和它垂直交叉的那个就成了cross axis。 - flex-wrap
子元素换行规则 -
flex-flow不需要记这个
上面两项的缩写;比如flex-flow:row no-wrap;
和分别设置flex-direction:row;flex-wrap:no-wrap;
是一样的。 - justify-content
设置主轴对齐方式 - align-items
设置交叉轴对齐方式 - align-content
控制多行item间距时用的。
2.flex item
flex父容器里的每一个项目都可以单独设置以下六个属性:
- order
定义项目的排列顺序。数值越小,排列越靠前,默认为0。 - flex-grow
属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。也可以理解成分配剩余空间的。 - flex-shrink
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。意思就是,如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。 -
flex-basis(这个属性没卵用,是设置默认宽度的)
定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。 - flex
flex属性是flex-grow, flex-shrink 和 flex-basis的简写。 - align-self
这个有点重要了。
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
网友评论