天天看点

我对弹性布局(FIEX)的初步认识和理解

弹性布局(fiex)模块旨在提供一个更加有效的方式来布置、对齐和分布容器之间的各项内容,即使它们的大小是未知或者动态变化的。弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空间(主要是为了容纳所有类型的显示设备和屏幕尺寸)。 弹性布局与方向无关,这是相对于常规布局(块是以垂直和内联水平为基础)最重要的不同点。很显然,常规布局设计缺乏灵活性,无法支持大型和复杂的应用程序(特别是当它涉及改变方向、缩放、拉伸和收缩等时)。

弹性局的基础语法,主要涉及flex容器的属性和flex项目的属性,容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫作main start,结束位置叫作main end;交叉轴的开始位置叫作cross start,结束位置叫作cross end。 项目默认沿主轴排列。单个项目占据的主轴空间叫作main size,占据的交叉轴空间叫作cross size。

·flex-direction:主轴的方向(即项目的排列方向,左中右、上中下)。 ·flex-wrap:如果一条轴线排不下该如何换行。 ·flex-flow:flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。 ·justify-content:项目在主轴上如何对齐(左中右)。 ·align-items:项目在交叉轴上如何对齐(上中下)。 ·align-content:定义多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。如图:

我对弹性布局(FIEX)的初步认识和理解

flex容器的属性

flex容器包含以下几个属性:flex-direction(项目排列方向),flex-wrap(项目换行)、flex-flow、justify-content(水平对齐)、align-items(垂直对齐)、align-content(各行对齐)。

项目排列方向(flex-direction)

flex-direction属性决定主轴的方向(即项目的排列方向),这里的排列方向可以理解为水平方向和垂直方向。代码如下,示意图如图7-3所示。

.box { flex-direction: row | row-reverse | column | column-reverse; }             
我对弹性布局(FIEX)的初步认识和理解

flex-direction项目排列方向 代码中各值含义如下。

·column-reverse:主轴为垂直方向,起点在下沿。

·column:主轴为垂直方向,起点在上沿。

·row(默认值):主轴为水平方向,起点在左端。

·row-reverse:主轴为水平方向,起点在右端。

.小程序默认排版 下面代码显示5个长度和宽度都是100px的方块。

.wxml文件代码示例如下:

<view class='zong'>
<view class='fangxing'>
<text>01</text>
</view>
<view  class='fangxing'>
<text>02</text>
  </view>
  <view  class='fangxing'>
    <text>03</text>
  </view>
  <view  class='fangxing'>
    <text>04</text>
  </view>
  <view  class='fangxing'>
    <text>05</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{
 padding: 10px;     /*内边距*/
}
.fangxing{
  width: 100px; 
  height: 100px;  
  background-color:  beige;
margin: 10px;         /*每个方框的外边距*/
}

           
我对弹性布局(FIEX)的初步认识和理解

flex-direction:row .wxml文件不变(沿用默认排版的代码),增加flex显示模式。

.wxss文件代码示例如下:

.zong{
  padding: 10px;
  display: flex; 
  flex-direction:  row;    /* row是默认值,该行样式可以省略*/
  /* row默认,可以不写:row | row-reverse | column | column-reverse*/ 
}


.fangxing{
width: 100px; height: 100px;
background-color:  beige;
  margin: 10px;
}           

flex-direction:row让容器内的元素按行排列,同时默认不换行。display:flex设置后flex-direction的属性设置才会生效。 3.flex-direction:row-reverse .wxml文件不变(沿用默认排版的代码),设置容器的样式flex-direction:row-reverse。

.wxss文件代码示例如下:

.zong{
  display: flex; 
  flex-direction: row-reverse;
  padding: 10px;    /*内边距*/
}           
我对弹性布局(FIEX)的初步认识和理解

小程序中项目按flex-direction:row-reverse反转排列效果 4.flex-direction:column .wxml文件不变(沿用默认排版的代码),设置容器的样式flex-direction:column。

.wxss文件代码示例如下:

.zong{


display: flex; 


flex-direction: column;


padding: 10px;    /*内边距*/


}           
我对弹性布局(FIEX)的初步认识和理解

flex-direction:column-reverse .wxml文件不变(沿用默认排版的代码),设置容器的样式flex-direction:column-reverse。

.wxss文件代码示例如下:

.zong{
  display: flex; 
  flex-direction: column-reverse;
  padding: 10px;    /*内边距*/

           
我对弹性布局(FIEX)的初步认识和理解

项目换行(flex-wrap) 默认情况下,项目都排在一条线(又称“轴线”)上。flex-wrap属性定义了如果一条轴线排不下该如何换行,如图所示。

我对弹性布局(FIEX)的初步认识和理解

基础语法和值如下:

.box{ flex-wrap: nowrap | wrap | wrap-reverse; }             

flex-wrap项目换行 ·nowrap(默认):不换行,如图所示。

我对弹性布局(FIEX)的初步认识和理解

nowrap不换行 ·wrap:换行,第一行在上方,如图所示。

我对弹性布局(FIEX)的初步认识和理解

wrap换行 ·wrap-reverse:换行,第一行在下方,如图所示。

我对弹性布局(FIEX)的初步认识和理解

wrap-reverse换行 1.flex-wrap:nowrap 在容器的样式中增加代码。

zong{
  flex-wrap: nowrap    /*nowrap默认值,可选属性值:nowrap|wrap|wrap-reverse*/
}           

nowrap效果如图所示。

我对弹性布局(FIEX)的初步认识和理解

flex-wrap:wrap 在容器中增加样式flex-wrap:wrap。

.wxml文件代码示例如下:

<view class='zong'>
 <view class='fangxing'>
    <text>01</text>
</view>
<view  class='fangxing'>
  <text>02</text>
</view>
  <view  class='fangxing'>
  <text>03</text>
  </view>
  <view  class='fangxing'>
<text>04</text>
  </view>
  <view  class='fangxing'>
<text>05</text>
  </view>
</view>

           

.wxss文件代码示例如下:

.zong{


padding: 10px;


display: flex; 


flex-direction: row ;


/*row默认,属性值有row|row-reverse|column|column-


      reverse*/


flex-wrap: wrap;


/*nowrap默认,属性值有:nowrap | wrap | wrap-


      reverse*/


}


.fangxing{


  width: 100px; height: 100px;  
  background-color:  beige;
  margin: 10px;
}           

.flex-wrap:wrap-reverse 只需更改上面的容器样式,变更为flex-wrap:wrap-reverse。 .wxss文件代码示例如下:

.zong{
padding: 10px;
display: flex; 
flex-direction: row ;
/*row默认,属性值有row|row-reverse|column|
column-reverse*/
flex-wrap: wrap-reverse;
/*nowrap默认,属性值有:nowrap|wrap|wrap-
reverse*/
}           
我对弹性布局(FIEX)的初步认识和理解

flex-flow属性 flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。代码示例如下:

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

水平对齐(justify-content) justify-content属性定义了项目在主轴上的对齐方式,如图所示。

我对弹性布局(FIEX)的初步认识和理解
.box { 


justify-content: flex-start | flex-end | center | space-between | space-around; 


}            

代码中各值含义如下。 ·

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

ustify-content:flex-start .wxml文件代码示例如下:

<view class='zong'>
   <view class='fangxing'>
      <text>01</text>
  </view>
  <view  class='fangxing'>
    <text>02</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{


display: flex; 


justify-content:  flex-start;


/*flex-start是默认值:flex-start|flex-end|center|space-between|space-around*/


}


.fangxing{


width: 100px; height: 100px;


background-color:  beige;


}           
我对弹性布局(FIEX)的初步认识和理解

justify-content:flex-end .wxml文件代码示例如下:

<view class='zong'>
    <view class='fangxing'>
      <text>01</text>
  </view>
  <view  class='fangxing'>
    <text>02</text>
  </view>
</view>           
.zong{
  display: flex; 
  justify-content:  flex-end;
  /*flex-start是默认值:flex-start|flex-end|center|space-between|space-around*/
}           
我对弹性布局(FIEX)的初步认识和理解

justify-content:center .wxml文件代码示例如下:

<view class='zong'>
    <view class='fangxing'>
      <text>01</text>
  </view>
<view  class='fangxing'>
    <text>02</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 


  justify-content:  center;


  /*flex-start是默认值:flex-start|flex-end|center|space-between|space-around*/


}



           
我对弹性布局(FIEX)的初步认识和理解

justify-content:space-between .wxml文件代码示例如下:

<view class='zong'>
    <view class='fangxing'>
      <text>01</text>
  </view>
  <view  class='fangxing'>
    <text>02</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content:  space-between;
  /*flex-start是默认值:flex-start|flex-end|center|space-between|space-around*/
}           
我对弹性布局(FIEX)的初步认识和理解

justify-content:space-around .wxml文件代码示例如下:

<view class='zong'>
    <view class='fangxing'>
      <text>01</text>
  </view>
  <view  class='fangxing'>
    <text>02</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content:  space-around;
  /*flex-start是默认值:flex-start|flex-
end|center|space-between|space-around*/
}           
我对弹性布局(FIEX)的初步认识和理解

垂直对齐(align-items) align-items属性定义项目在交叉轴上如何对齐,如图所示。

我对弹性布局(FIEX)的初步认识和理解

代码示例如下:

.box { align-items: flex-start | flex-end | center | baseline | stretch; }           

具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。该属性可以取5个值。 ·flex-start:交叉轴的起点对齐。 ·flex-end:交叉轴的终点对齐。 ·center:交叉轴的中点对齐。 ·baseline:项目的第一行文字的基线对齐。 ·stretch(默认值):如果项目未设置高度或设为auto,区块将占满整个容器高度。

align-items:flex-start .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
    <view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>  
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content: space-around;
  align-items: flex-start;    /*默认值是stretch,属性值有:flex-start | flex-end |
                      center | baseline | stretch */
}


.fangxing1{
  width: 60px; height: 60px;  
  background-color:  beige;
}


.fangxing2{
  width: 30px; height: 30px;  
  background-color:  beige;
}


.fangxing3{
  width: 90px; height: 90px;  
  background-color:  beige;
}           
我对弹性布局(FIEX)的初步认识和理解

align-items:flex-end .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
    <view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content: space-around;
  align-items: flex-end;
   /*默认值是stretch,属性值有:flex-start|flex-end|center|baseline|stretch */
}           
我对弹性布局(FIEX)的初步认识和理解

align-items:center .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
    <view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>  
</view>

           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content: space-around;
  align-items: center;


/*默认值是stretch,属性值有:flex-start|flex-end|center|baseline|stretch */


}           
我对弹性布局(FIEX)的初步认识和理解

align-items:baseline .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
    <view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>  
</view>           
.zong{
  display: flex; 
  justify-content: space-around;
  align-items: baseline;
   /*默认值是stretch,属性值有:flex-start|flex-end|center|baseline|stretch */
}           
我对弹性布局(FIEX)的初步认识和理解

align-items:stretch .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
<view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>  
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
  justify-content: space-around;
  align-items: stretch;
  /*默认值是stretch,属性值有:flex-start|flex-end|center|baseline|stretch */
}           
我对弹性布局(FIEX)的初步认识和理解

不设置01这个区块的高度,效果如何。 .wxml文件代码示例如下:

<view class='zong'>
  <view class='fangxing1'>
      <text>01</text>
    </view>
    <view  class='fangxing2'>
      <text>02</text>
    </view>
    <view  class='fangxing3'>
      <text>03</text>
    </view>  
</view>           
我对弹性布局(FIEX)的初步认识和理解

各行对齐(align-content) align-content属性用于修改flex-wrap属性的行为,类似于align-items,但它不是设置弹性子元素的对齐,而是设置各行的对齐,如图所示。

我对弹性布局(FIEX)的初步认识和理解

align-content各行对齐 代码示例如下:

.box { align-content: flex-start | flex-end | center | stretch | space-between | space-around; }            

代码中各值的含义如下。

·flex-start:交叉轴的起点对齐。

·flex-end:交叉轴的终点对齐。

·center:交叉轴的中点对齐。

·space-between:交叉轴两端对齐,轴线之间的间隔平均分布。 ·space-around:每根轴线两侧的间隔都相等,因此,轴线之间的间隔比轴线与边框的间隔大一倍。

·stretch(默认值):轴线占满整个交叉轴。

.zong{
  display: flex; 
  justify-content: space-around;
  align-items: stretch;
  /*默认值是stretch,属性值有:flex-start|flex-end|center|baseline|stretch */
}


.fangxing1{
  background-color:  beige;
}


.fangxing2{
  width: 30px; height: 30px;  
  background-color:  beige;
}


.fangxing3{
  width: 90px; height: 90px;  
  background-color:  beige;
}

           

flex项目的属性

本节主要讲解flex项目属性的基础语法和在小程序中的应用,主要包含:子元素的排序,放大比例,缩小比例,项目占据的主轴空间,flex综合属性设置,子元素的对齐,对齐和居中。

子元素的排序(order) order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0,如图所示。

我对弹性布局(FIEX)的初步认识和理解

.wxml文件代码示例如下:

<view class='zong'>
    <view class='fangxing1'>
      <text>01</text>
  </view>
  <view  class='fangxing2'>
    <text>02</text>
  </view>
  <view  class='fangxing3'>
    <text>03</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{ 
  display: flex; 
  flex-direction: row  ;
  padding: 10px;        /*内边距*/
}


.fangxing1{
  width: 100px; height: 100px;  
  background-color:     #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
}


.fangxing2{
  width: 100px; height: 100px;  
  background-color:      #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
}


.fangxing3{
  width: 100px; height: 100px;  
  background-color:      #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
}

           
我对弹性布局(FIEX)的初步认识和理解

order改变 我们修改03区块的order(样式)值为负数,01区块的order(样式)值为10,03区块的order(样式)值为100(WXML页面不变),代码和效果如下。

.wxss文件代码示例如下:

.zong{ 
  display: flex; 
  flex-direction: row  ;
  padding: 10px;        /*内边距*/
}


.fangxing1{
  width: 100px; height: 100px;  
  background-color:      #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
  order: 10;
}


.fangxing2{
  width: 100px; height: 100px;  
  background-color:      #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
  order: 100;
}


.fangxing3{
  width: 100px; height: 100px;  
  background-color:      #f5f5dc;
  margin: 10px;        /*每个方框的外边距*/
  order: -1;
}



           
我对弹性布局(FIEX)的初步认识和理解

放大比例(flex-grow),flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。 代码示例如下:

.item { flex-grow: <number>;    /* default 0 */ }            

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项目多一倍。

我对弹性布局(FIEX)的初步认识和理解

为了增强效果,我们将每个方框的长宽都调整为60px。

.wxml文件代码示例如下:

.zong{ 
  display: flex; 
  flex-direction: row  ;
  padding: 5px;        /*内边距*/
}


.fangxing1{
  width: 60px; height: 60px;  
  background-color:    #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
}


.fangxing2{
  width: 60px; height: 60px;  
  background-color:    #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  }


.fangxing3{
  width: 60px; height: 60px;  
  background-color:    #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
}

           

.wxss文件代码示例如下:

<view class='zong'>
    <view class='fangxing1'>
      <text>01</text>
  </view>
<view  class='fangxing2'>
    <text>02</text>
  </view>
  <view  class='fangxing3'>
    <text>03</text>
     </view>
</view>           
我对弹性布局(FIEX)的初步认识和理解

设置区块的flex-grow 示例,下面我们设置01区块的flex-grow的值为1,其他区块不变。只需要改造01区块对应的样式(样式类名为fangxing1)代码即可。

.wxss文件代码示例如下:

.fangxing1{
  width: 60px; height: 60px;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-grow: 1;
}           
我对弹性布局(FIEX)的初步认识和理解

可以看到01区块扩展占用了所有剩余的空白(内边距、外边距除外)。 示例2 下面我们设置02区块的flex-grow的值为1,其他区块不变。只需要改造02区块对应的样式(样式类名为fangxing2)代码即可。

.wxss文件代码示例如下:

.fangxing2{
  width: 60px; height: 60px;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-grow: 1;
}           
我对弹性布局(FIEX)的初步认识和理解

下面我们设置01和02区块的flex-grow的值为1,03区块不变。

.wxss文件代码示例如下:

.fangxing1{
  width: 60px; height: 60px;  
  background-color:    #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-grow: 1;
}


.fangxing2{
  width: 60px; height: 60px;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-grow: 1;
}



           

01和02区块flex-grow改变后效果 可以看到03区块的大小不变,01和02区块的宽度都同样扩展,占用了余下的空间。下面我们设置所有区块的flex-grow的值为1。

.wxss文件代码示例如下:

.zong{ 
display: flex; 
flex-direction: row  ;
  padding: 5px;        /*内边距*/
}


.fangxing1{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: 5px;        /*每个方框的外边距*/
flex-grow: 1;


}


.fangxing2{
width: 60px; height: 60px;  
  background-color:      #f5f5dc;
margin: 5px;        /*每个方框的外边距*/
flex-grow: 1;


}


.fangxing3{
width: 60px; height: 60px;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-grow: 1;
}

           
我对弹性布局(FIEX)的初步认识和理解

flex-grow均分分配效果 可以看到,所有区块的宽度都同样扩展,占用了余下的空间(均分了空白区域)。

缩小比例(flex-shrink) flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 代码示例如下:

.item { flex-shrink: <number>; /* default 1 */ }            

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。 如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。 默认代码和效果 父容器设定了flex模式后,其内部的子元素默认都是按等比例缩小的。 .wxml文件代码示例如下:

<view class='zong'> 
  <view class='fangxing1'>
    <text>01</text>
  </view>
  <view  class='fangxing2'>
    <text>02</text>
  </view>
  <view  class='fangxing3'>
    <text>03</text>
  </view>
</view>           

.wxss文件代码示例如下:

.zong{ 
  display: flex; 
  padding: 5px;        /*内边距*/
}


.fangxing1{
  width: 300rpx; height: 300rpx;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
}


.fangxing2{
  width: 300rpx; height: 300rpx;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
}


.fangxing3{
  width: 300rpx; height: 300rpx;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
}



           
我对弹性布局(FIEX)的初步认识和理解

flex-shrink默认效果 下面我们设置01区块的flex-shrink的值为0(0表示不缩小,默认值1表示缩小),其他区块不变。只需要改造01区块对应的样式(样式类名为fangxing1)代码即可。

.wxss文件代码示例如下:

.fangxing1{
  width: 300rpx; height: 300rpx;  
  background-color:      #f5f5dc;
  margin: 5px;        /*每个方框的外边距*/
  flex-shrink: 0;
}



           
我对弹性布局(FIEX)的初步认识和理解

项目占据的主轴空间(flex-basis) flex-basis属性定义了在分配多余空间之前项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。使用语法和示例代码如下:

.item { flex-basis: <length> | auto; /* default auto */ }           

它可以设为与width或height属性一样的值(比如350px),则项目将占据固定空间。 大家可以尝试下百分比的设置。

flex综合属性设置 ,flex属性是flex-grow、flex-shrink和flex-basis的简写,默认值为0 1 auto。后两个属性可选。 使用语法和代码示例如下: .item { flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] } 该属性有两个快捷值:auto(1 1 auto)和none(0 0 auto)。 建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

子元素的对齐(align-self) align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性,如图7-40所示。 图7-40 子元素对齐 默认值为auto,表示继承父元素的align-items属性,如果没有父元素则等同于stretch。代码示例如下:

.item { align-self: auto | flex-start | flex-end | center | baseline | stretch; }           

.wxml文件代码示例如下:

<view class='zong'>
<view class='fangxing1'>
<text>01</text>
</view>
<view  class='fangxing2'>
<text>02</text>
</view>
<view  class='fangxing3'>
<text>03</text>
</view>
</view>           

.wxss文件代码示例如下:

.zong{
  display: flex; 
justify-content: space-around;
}
.fangxing1{
  width: 60px; height: 60px;  
background-color:  beige;
}
.fangxing2{
  width: 30px; height: 30px;  
background-color:  beige;
}
.fangxing3{
width: 90px; height: 90px;  
background-color:  beige;
}           
我对弹性布局(FIEX)的初步认识和理解

下面我们设置01区块的align-self的值为flex-end,02区块的align-self的值为center,其他区块不变。

.wxss文件代码示例如下:

.zong{
display: flex; 
justify-content: space-around;
}
.fangxing1{
width: 60px; height: 60px;  
background-color:  beige;
align-self: flex-end;
}
.fangxing2{
width: 30px; height: 30px;  
background-color:  beige;
align-self:  center;
}
.fangxing3{
width: 90px; height: 90px;  
background-color:  beige;
}           
我对弹性布局(FIEX)的初步认识和理解

对齐和居中(margin) 1.默认样式和代码 .wxml文件代码示例如下:

<view class='zong'>
<view class='fangxing1'>
<text>01</text>
</view>
<view  class='fangxing2'>
<text>02</text>
</view>
<view  class='fangxing3'>
<text>03</text>
</view>
</view>           

.wxss文件代码示例如下:

.zong{  
display: flex; 
flex-direction: row  ;
padding: 5px;    /*内边距*/
}
.fangxing1{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: 5px;        /*每个方框的外边距*/
}
.fangxing2{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: 5px;        /*每个方框的外边距*/
}
.fangxing3{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: 5px;        /*每个方框的外边距*/
}

           
我对弹性布局(FIEX)的初步认识和理解

设置margin值为auto,自动获取弹性容器中剩余的空间。设置垂直方向的margin值为auto,可以使弹性子元素在弹性容器的垂直方向居中。以下实例在第一个弹性子元素上设置了“margin-right:auto;”,它将剩余的空间放置在元素的右侧。 下面我们设置01区块的margin-right值为auto,其他区块不变。只需要改造01区块对应的样式(样式类名为fangxing1)代码即可。

.wxss文件代码示例如下:

.fangxing1{
width: 60px; height: 60px;  
background-color:  #f5f5dc;
margin-right: auto;
}           
我对弹性布局(FIEX)的初步认识和理解

使用弹性布局,居中变得很简单,只要设置“margin:auto;”便可使弹性子元素在垂直和水平方向上完全居中。

.wxml文件代码示例如下:

<view class='zong2'>
<view class='fangxing4'>
<text>04</text>
</view>
</view>           

.wxss文件代码示例如下:

.zong2{  
display: flex; 
padding: 5px;        /*内边距*/
height: 200px; 
background-color:  gainsboro;
}
.fangxing4{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: auto;
}           

要设置文本左右居中和上下居中,需要改造04区块的样式代码。

.wxss文件代码示例如下:

.fangxing4{
width: 60px; height: 60px;  
background-color:      #f5f5dc;
margin: auto;
text-align: center;    /*所有居中*/
line-height: 60px;    /*上下居中*/
}           
我对弹性布局(FIEX)的初步认识和理解

flex布局样例

下面我们定义一个基本的布局,长宽都是250px的方框,背景为灰色。然后我们在基本布局内演示flex各种实现。基本布局代码示例如下:

<style> 
/*定义一个带颜色的背景方框*/
.flex-container { 
/*display: -webkit-flex; */
/*display: flex;  */
width: 250px; 
height: 250px; 
background-color: lightgrey; 
} 
/*定义一个长宽都是70的圆形*/
.flex-item{ 
background-color: cornflowerblue; 
width: 70px; 
height: 70px;
border-radius:50%;  margin:10px;
} 
</style>           
我对弹性布局(FIEX)的初步认识和理解

继续阅读