Flex -- 弹性布局

   一、简要介绍
 
       Flex是2009年w3c提出的一种简洁、快速弹性布局的属性。主要思想是给予容器控制内部元素和宽度的能力。flex概念示意图如下
     
     使用flex布局的容器(flex container),它内部的元素自动成为flex项目(flex item)。容器拥有两根隐形的轴,水平的主轴(main axis),和竖直的交叉轴。主轴开始的位置,即主轴与右边框的交点,称为main start;主轴结束的位置称为main end;交叉轴开始的位置称为cross start;交叉轴结束的位置称为cross end。item按主轴或交叉轴排列,item在主轴方向上占据的宽度称为main size,在交叉轴方向上占据的宽度称为cross size。  需注意使用flex容器内元素,即flex item的float,clear、vertical-align属性将失效。
 
二、属性总结表
 
  
三、属性详述
1.flex-direction
  • row(默认值):主轴为水平方向,起点在左端。   
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿<div id="box">
    <div class="inner"></div>
    <div class="inner"></div>
    <div class="inner"></div>
</div>


#box{ display: flex; flex-direction: row;
} .inner{ width: 100px; height: 100px; background: #abcdef; margin: 10px; }
 

2.flex-wrap:

  • nowrap(默认值):默认不换行。   
  • wrap:换行,第二行在第一行下面,从左到右
  • wrap-reverse:换行,第二行在第一行上面,从左到右;
 
<div id="box">
    <div class="inner"></div>
    <div class="inner"></div>
    <div class="inner"></div>
</div>
 
#box{
        display: flex;
        flex-direction: row;
     width:500px;
     border:1px solid red;
     flex-wrap:wrap; //超出换行,如果不超出,则不换行    

} .inner{ width: 100px; height: 100px; background: #abcdef; margin: 10px; }

3.flex-flow:是flex-direction和flex-wrap的简写形式,默认是row nowrap

flex-flow:flex-direction|flex-wrap;

.box {
  flex-flow: <flex-direction> <flex-wrap>; }

4.justify-content:子元素在主轴对齐的方式

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

       flex-start和flex-end,center这三个都比较简单,主要区分开下面的space-between和space-around;

    space-between:两端对齐,

space-around:

  

 5.align-items:交叉轴如何对齐,如果flex-direction:row和row-reverse那么交叉轴就是y轴,如果是column和column-reverse那么交叉轴是y轴
  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

     baseline:以第一个子元素文字的基线对齐

  stretch:子元素不设置高度,那么高度将沾满整个父元素
 

 6.align-content:属性定义多根轴线的对齐方式。如果只有一根线,该属性不起作用

  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/combating/p/10801460.html