flex弹性布局

一、定义

Flex 布局,可以简便、完整、响应式地实现各种页面布局。

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。

注意:设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

以下6个属性设置在容器上。

  1. flex-direction
  2. flex-wrap
  3. flex-flow
  4. justify-content
  5. align-items
  6. align-content

二、应用

比如要实现整体布局呈现两列布局,如下操作:

wxml代码如下:

<view class="both-list column-2">
  <view class="both-item backgorundWhite">
    <text class="both-text">测试display属性</text>
  </view>
  <view class="both-item backgorundWhite">
    <text class="both-text">dispaly:flex</text>
  </view>
  <view class="both-item backgorundWhite">
    <text class="both-text">align-items</text>
  </view>
  <view class="both-item backgorundWhite">
    <text class="both-text">flex-wrap</text>
  </view>
   <view class="both-item backgorundWhite">
    <text class="both-text">flex-direction</text>
  </view>
</view>

wxss代码如下:


.both-list{
  display:flex;
  flex-wrap:wrap;
} 

.both-list>.both-item{
  position: relative;
  display: flex;
  padding: 20rpx 0 30rpx;
  flex-direction: column;
  
}
.backgorundWhite{
  background-color:#FFFFFF;
  text-align: center;
}

.column-2>view {
  width:50%;
}

.both-text{
  padding:70rpx 0px 70rpx;
}

.both-list>.both-item:after {
  position: absolute;
  top: 0;
  left: 0;
  box-sizing: border-box;
  width: 200%;
  height: 200%;
  border-right: 1px solid rgba(0, 0, 0, 0.1);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: inherit;
  content: " ";
  transform: scale(0.5);
  transform-origin: 0 0;
  pointer-events: none;
}

.both-list.col-2>.both-item:nth-child(2n):after{
  border-right-width: 0;
}

三、解析

1)对最外围标签,也就是上面的both-list设置属性:display:flex;flex-wrap:wrap;

flex-wrap属性:如果一条轴线排不下,如何换行。

  • nowrap(默认):不换行。
  • wrap:换行,第一行在上方。
  • wrap-reverse:换行,第一行在下方。

如果修改.both-list{display:flex;flex-wrap:nowrap;}则效果如下:

如果修改.both-list{display:flex;flex-wrap:wrap-reverse;}则效果如下:

2)flex-direction属性:属性决定主轴的方向(即项目的排列方向)

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。->
  • column-reverse:主轴为垂直方向,起点在下沿。

3)justify-content属性:定义了项目在主轴上的对齐方式。

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

首先我修改.column-2>view {width:40%;},为了不占满全部宽度

然后设置.both-list{display:flex;flex-wrap:wrap;justify-content:flex-start;},效果如下:

如果设置为justify-content:flex-end;效果如下:

如果设置为justify-content:center;效果如下:

如果设置为justify-content:space-between;效果如下:

如果设置为justify-content:space-around;效果如下:

4)align-items属性:属性定义项目在交叉轴上如何对齐。(垂直轴)-针对内容

  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

如果增加属性给.both-list>.both-item{align-items: flex-start;},效果如下:

 

5)flex-flow属性

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值