Flex布局则是一种新的布局方案,通过为修改父div的display属性,让父元素成为一个flex容器,从而可以自由的操作容器中子元素(项目)的排列方式。
2.项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
任何一个容器都可以指定为 Flex 布局。
.box{
display: flex;
}
行内元素也可以使用 Flex 布局。
.box{
display: inline-flex;
}
Flex布局的容器属性主要有:flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content。
flex-direction属性决定主轴的方向(即项目的排列方向)
row(默认值):主轴为水平方向,起点在左端。

<!--pages/contact/contact.wxml-->
<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item">2</view>
<view class="flex-item">3</view>
<view class="flex-item">4</view>
</view>
.flex-container{
display: flex;
flex-direction: row;
}
.flex-item{
width: 100rpx;
height: 100rpx;
line-height: 100rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
row-reverse:主轴为水平方向,起点在右端。

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

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

flex-wrap属性用于控制项目是否换行。
nowrap(默认):不换行。

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item">2</view>
<view class="flex-item">3</view>
<view class="flex-item">4</view>
<view class="flex-item">5</view>
<view class="flex-item">6</view>
<view class="flex-item">7</view>
</view>
.flex-container{
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
.flex-item{
width: 200rpx;
height: 200rpx;
line-height: 100rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
wrap:换行,第一行在上方。

wrap-reverse:换行,第一行在下方。

flex-flow属性是flex-deriction与flex-wrap属性的简写集合,默认属性为row nowrap,即横向排列,且不换行,如果需要控制项目排列与换行,推荐使用此属性,而非单独写两个。

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item">2</view>
<view class="flex-item">3</view>
<view class="flex-item">4</view>
<view class="flex-item">5</view>
<view class="flex-item">6</view>
<view class="flex-item">7</view>
</view>
.flex-container{
display: flex;
flex-flow: row wrap;
}
.flex-item{
width: 200rpx;
height: 200rpx;
line-height: 100rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
justify-content属性用于控制项目在横轴的对齐方式,默认flex-start即左对齐,center 为居中,对应的- - flex-end为右对齐。
flex-start(默认值):左对齐

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item">2</view>
<view class="flex-item">3</view>
<view class="flex-item">4</view>
</view>
.flex-container{
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
}
.flex-item{
width: 100rpx;
height: 100rpx;
line-height: 100rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
center: 居中

space-between:两端对齐,项目之间的间隔都相等。

space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

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

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item height1">2</view>
<view class="flex-item">3</view>
<view class="flex-item height2">4</view>
</view>
/* pages/contact/contact.wxss */
.flex-container{
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-items: flex-start;
}
.flex-item{
width: 100rpx;
height: 100rpx;
line-height: 100rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
.height1{
height: 140rpx;
line-height: 140rpx;
}
.height2{
height: 180rpx;
line-height: 180rpx;
}
flex-end:交叉轴的终点对齐。

center:交叉轴的中点对齐。

baseline: 项目的第一行文字的基线对齐。

stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

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

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item">2</view>
<view class="flex-item">3</view>
<view class="flex-item">4</view>
<view class="flex-item">5</view>
<view class="flex-item">6</view>
<view class="flex-item">7</view>
<view class="flex-item">8</view>
</view>
.flex-container{
height: 400rpx;
display: flex;
flex-flow: row wrap;
align-items: stretch;
border: 2px solid #bd0f26;
align-content:flex-start;
}
.flex-item{
width: 160rpx;
height: 150rpx;
line-height: 150rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
flex-end:与交叉轴的终点对齐。

space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

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

order:属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

<view class="flex-container">
<view class="flex-item">1</view>
<view class="flex-item item02">2</view>
<view class="flex-item">3</view>
<view class="flex-item item04">4</view>
<view class="flex-item">5</view>
<view class="flex-item">6</view>
<view class="flex-item">7</view>
<view class="flex-item">8</view>
</view>
.flex-container{
height: 400rpx;
display: flex;
flex-flow: row wrap;
align-items: stretch;
border: 2px solid #bd0f26;
align-content:flex-start;
}
.flex-item{
width: 160rpx;
height: 150rpx;
line-height: 150rpx;
background-color: #98e1ff;
border: 1px solid #1d9ace;
text-align: center;
}
.item02{
order: 2;
}
.item04{
order: 1;
}
flex-grow:
属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。
如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

.item02{
flex-grow:1
}
.item04{
flex-grow:2
}
flex-shrink:
属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。
如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
- 微信小程序开发教程(3)- 小程序项目目录结构及页面构成详解(368)
- 微信小程序开发教程(8)- 小程序flex布局详解(315)
- 微信小程序开发教程(7)- 小程序中的事件绑定(305)
- 微信小程序开发教程(5)- 小程序组件使用详解(304)
- 微信小程序开发教程(4)- 微信小程序页面wxml模板文件、wxss样式文件详解(299)
- 微信小程序开发教程(2)- 创建小程序项目(298)
- 微信小程序开发教程(1)- 开发环境搭建(297)
- 微信小程序开发教程(5)- 小程序API使用详解(291)
- 微信小程序开发教程(6)- 小程序中的数据绑定(290)
- 分享一款免费的微信群活码、QQ群活码平台、短链平台-畅联活码(254)
- 1. Windows Server 2008 R2永久激活及Chew-WGA v0.9下载(13315)
- 2.Visual Studio 2017中安装visualSVN及使用详解(5228)
- 3.完美解决iis下JWplayer提示Error loading media: File could not be played错误(4068)
- 4.asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(3418)
- 5.Android avax.net.ssl.SSLPeerUnverifiedException: No peer certificate 解决方法(httpClient支持HTTPS的访问方式)(3264)
- 6..Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(3015)
- 7.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2906)
- 8.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2904)
- 9.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2515)
- 10. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2488)
