样式篇-弹性盒子布局

124 阅读2分钟

一、引言

2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前大部分浏览器都已经支持Flex属性。

我也一直在使用Flex,但是有的属性也只是会用,一知半解,甚至有的属性就没用过,比如: orderflex-grow等。写这篇文章的目的主要还是做个总结与梳理,加深印象。

给大家推荐一款 flex相关的 小游戏,帮你记忆各属性flexboxfroggy.com/

WechatIMG619.jpeg

二、概念:

1. 容器: 指要实现布局效果的父元素
2. 项目:要实现布局效果的子元素。
3. 主轴:子元素排列方向的轴为主轴,默认为x轴。
4. 交叉轴:与主轴垂直的轴为交叉轴。

三、容器的属性:

如果希望弹性布局的父元素独自占布局中的一行,就要设置父元素为display: flex。
如果希望弹性布局的父元素显示为行内元素的特征,与其他元素同在一行,可设置父元素为display: inline-flex;

  flex-direction: 改变主轴的方向。
      row: 默认值,x轴为主轴,项目从左向右排列
      row-reverse: 项目从右侧开始,从右向左排列
      column: 主轴为y轴,从上向下排列
      column-reverse: 由下向上排列。
  flex-wrap: 控制是否换行
      nowrap: 默认值,不换行。
      wrap:只要宽不够,就立即换行
  flex-flow: 是flex-direction和flex-wrap的简写
      默认值:flex-flow: row nowrap;
  justify-content: 在主轴上的对齐方式
      flex-start: 从起点到终点对齐。
      flex-end: 从终点到起点对齐
      center: 主轴居中对齐
      space-between: 两端对齐
      space-around: 每个项目的间距相同
  align-items: 交叉轴上的对齐方式
      flex-start:  以交叉轴的起点方向对齐
      flex-end: 以交叉轴的终点方向对齐
      center: 以交叉轴中线居中对齐
      baseline:  让项目以交叉轴的基线对齐
      stretch:  如果项目未设置尺寸,让项目在交叉轴占满所有空间

四、项目属性:

order: 指定项目的排列顺序,整数数字,无需单位,值越小越靠近起点
flex-grow:  项目的放大比例
flex-shrink: 项目的缩小比例
align-self: 某一个项目在交叉轴的对齐方式