index.wxml
<view class="container">
<view class="s1">view>
<view class="s2">view>
<view class="s3">view>
<view class="s4">view>
view>
index.wxss
.container {
/* display: flex; */
/* justify-content: space-evenly; */
/* align-items: center; */
}
.s1 {
.s1 {
width: 100px;
height: 100px;
background-color: aquamarine;
}
.s2 {
width: 100px;
height: 100px;
background-color: rebeccapurple;
}
.s3 {
width: 100px;
height: 100px;
background-color: greenyellow;
}
.s4 {
width: 100px;
height: 100px;
background-color: red;
}
}
实现效果
flex 是 flexible Box 的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何容器都可以指定为 flex 布局
采用 Flex 布局的元素,成为 Flex 容器(Flex container),简称容器,它的所有子元素自动成为容器成员,成为 Flex 项目(Item)
总: 通过给 父容器添加 flex 属性,来控制子盒子的位置和排列方式
将上述的父容器 (container)属性 display属性 设置为 flex 布局
index.wxss
.container {
display: flex;
}
index.wxml 保持不变
在 父容器设置 flex-direction的值
flex-direction: row;
(默认值)flex-direction: row-reverse;
(主轴反向)flex-direction: column;
(垂直方向)flex-direction: column-reverse;
(垂直反向)这里把盒子的大小改一下,并且设置主轴为 row,如果想尝试多种效果的,可以自行修改主轴方向
.container {
display: flex;
flex-direction: row; // 设置默认的布局
}
.s1 {
width: 50px;
height: 50px;
background-color: aquamarine;
}
.s2 {
width: 50px;
height: 50px;
background-color: rebeccapurple;
}
.s3 {
width: 50px;
height: 50px;
background-color: greenyellow;
}
.s4 {
width: 50px;
height: 50px;
background-color: red;
}
给 父容器 justify-content 的属性设置 为 flex-start,因为小程序默认的也是 flex-start
flex-start 和 inital 效果相似
.container {
display: flex;
flex-direction: row;
justify-content: flex-start;
}
.container {
display: flex;
flex-direction: row;
justify-content: flex-end;
}
.container {
display: flex;
flex-direction: row;
justify-content: center;
}
.container {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.container {
display: flex;
flex-direction: row;
justify-content: space-around;
}
.container {
display: flex;
flex-direction: row;
justify-content: space-evenly;
}
首先我们需要修改一下 父容器的样式:
wxss:
.container {
display: flex;
flex-direction: row;
justify-content: center;
height: 200px;
background-color: pink;
}
效果图
适用于单行的情况,属性值如下:
这也是默认值
wxss:
.container {
display: flex;
flex-direction: row;
justify-content: center;
height: 200px;
background-color: pink;
align-items: flex-start;
}
设置盒子水平,垂直居中(justify-content 和 align-items 都设置为 center)
wxss:
.container {
display: flex;
flex-direction: row;
justify-content: center;
height: 200px;
background-color: pink;
align-items: center;
}
效果图:
wxss:
.container {
display: flex;
flex-direction: row;
justify-content: center;
height: 200px;
background-color: pink;
align-items: flex-end;
}
我们先画六个格子,这种情况只适合多行 index.wxml
<view class="container">
<view class="s1">view>
<view class="s2">view>
<view class="s3">view>
<view class="s4">view>
<view class="s5">view>
<view class="s6">view>
view>
index.wxss
.container {
display: flex;
background-color: pink;
width: auto;
height: 400px;
flex-wrap: wrap;
}
.s1 {
width: 200rpx;
height: 200rpx;
background-color: aquamarine;
}
.s2 {
width: 200rpx;
height: 200rpx;
background-color: rebeccapurple;
}
/**
其它的盒子省略,样式是一样的,颜色不同而已
*/
效果
当我们设置父容器 align-content 为 flex-start 时,效果如下
我们发现上面的布局留了了一点空隙,所以我们可以使用 flex-grow 补全这个空白,比如我们在紫色的 框框当中设置 flex-grow 属性,这样就把这个多余的部分给撑住了。
wxss
.s2 {
width: 100px;
height: 100px;
flex-grow: 1;
background-color: rebeccapurple;
}
我们还可以在其他的盒子当中设置这个 flex-grow 属性,这样,这个盒子就会平分这个空间
控制子项在侧轴上的排列方式
可以运行单个项目与其他的项目有不同的对齐方式,可以覆盖 align-items 属性。默认为 auto,表示继承父类的 align-items 属性,如果没有父元素,则等同于 strtch
像这样,我们设置父亲属性为 align-items: flex-start
,给 4号各格子设置 align-self: flex-end;
就会出现如下效果
display flex
justify-content
有5个属性,分别是 align-items
也有5个属性,分别是