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)- 小程序项目目录结构及页面构成详解(263)
- 微信小程序开发教程(8)- 小程序flex布局详解(231)
- 微信小程序开发教程(7)- 小程序中的事件绑定(223)
- 微信小程序开发教程(1)- 开发环境搭建(219)
- 微信小程序开发教程(5)- 小程序组件使用详解(219)
- 微信小程序开发教程(4)- 微信小程序页面wxml模板文件、wxss样式文件详解(219)
- 微信小程序开发教程(2)- 创建小程序项目(218)
- 微信小程序开发教程(5)- 小程序API使用详解(217)
- 微信小程序开发教程(6)- 小程序中的数据绑定(207)
- 分享一款免费的微信群活码、QQ群活码平台、短链平台-畅联活码(136)
- 1. Windows Server 2008 R2永久激活及Chew-WGA v0.9下载(12784)
- 2.Visual Studio 2017中安装visualSVN及使用详解(4885)
- 3.完美解决iis下JWplayer提示Error loading media: File could not be played错误(3783)
- 4.asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(3006)
- 5.Android avax.net.ssl.SSLPeerUnverifiedException: No peer certificate 解决方法(httpClient支持HTTPS的访问方式)(2853)
- 6..Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(2718)
- 7.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2615)
- 8.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2586)
- 9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2233)
- 10.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2202)