Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序之 flex 布局最详细讲解 !!!

微信小程序之 flex 布局最详细讲解 !!!

作者头像
Gorit
发布于 2021-12-08 13:50:27
发布于 2021-12-08 13:50:27
17.9K251
代码可运行
举报
运行总次数:51
代码可运行

小程序 flex 布局快速入门

小程序 flex 布局实现

  • 如果想要让某个空间实现 Flex 布局,必须要给它的父控件设置 flex 样式

一、view 默认布局

index.wxml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view class="container">
  <view class="s1">view>
  <view class="s2">view>
  <view class="s3">view>
  <view class="s4">view>
view>

index.wxss

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.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;
}


}

实现效果

1.1 flex 布局原理

flex 是 flexible Box 的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何容器都可以指定为 flex 布局

  • 当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效
  • 伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 = flex 布局

采用 Flex 布局的元素,成为 Flex 容器(Flex container),简称容器,它的所有子元素自动成为容器成员,成为 Flex 项目(Item)

总: 通过给 父容器添加 flex 属性,来控制子盒子的位置和排列方式

1.2 flex 父项常见属性
  1. flex-direction :设置主轴的方向
  2. justify-content :设置主轴上的子元素排列方式
  3. flex-wrap :设置子元素是否换行
  4. align-content :设置侧轴上的子元素的排列方式(多行)
  5. align-items :设置侧轴上的子元素排列方式(单行)
  6. flex-flow :复合属性,相当于同时设置了flex-direction和flex-wrap

二、使用 flex 设置水平弹性布局

将上述的父容器 (container)属性 display属性 设置为 flex 布局

index.wxss

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
}

index.wxml 保持不变

2.1 Flex 布局的方向轴
  • Flex 布局有两根方向轴:水平的主轴 和 垂直的交叉轴
  • Flex 布局默认是水平主轴
2.1.1 水平主轴布局 row (水平向右)

在 父容器设置 flex-direction的值

  1. flex-direction: row;(默认值)
  1. flex-direction: row-reverse;(主轴反向)
2.1.2 垂直侧轴布局 column (水平向下)
  1. flex-direction: column;(垂直方向)
  1. flex-direction: column-reverse; (垂直反向)
2.2 Flex 中 justify-content 属性

这里把盒子的大小改一下,并且设置主轴为 row,如果想尝试多种效果的,可以自行修改主轴方向

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.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;
}
2.2.1 flex-start 左居中布局

给 父容器 justify-content 的属性设置 为 flex-start,因为小程序默认的也是 flex-start

flex-start 和 inital 效果相似

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
}
2.2.2 flex-end 右居中布局
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
}
2.2.3 center 水平居中布局
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
}
2.2.4 space-between 两端布局
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
2.2.5 space-around (留空等分布局) 环绕布局
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
}
2.2.6 space-evenly 等间距布局
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: space-evenly;
}

三、使用 flex 设置垂直弹性布局

首先我们需要修改一下 父容器的样式:

wxss:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 200px;
  background-color: pink;
}

效果图

3.1 align-items

适用于单行的情况,属性值如下:

3.1.1 使用 align-items 设置 flex-start

这也是默认值

wxss:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 200px;
  background-color: pink;
  align-items: flex-start;
}
3.1.2 使用 align-items 设置 center (常用!!!)

设置盒子水平,垂直居中(justify-content 和 align-items 都设置为 center)

wxss:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 200px;
  background-color: pink;
  align-items: center;
}

效果图:

3.1.3 使用 align-items 设置 flex-end 低端对齐

wxss:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.container {
  display: flex;
  flex-direction: row;
  justify-content: center;
  height: 200px;
  background-color: pink;
  align-items: flex-end;
}
3.2 align-content 设置侧轴上子元素的排列方式(多行)

我们先画六个格子,这种情况只适合多行 index.wxml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.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;
}

/**
其它的盒子省略,样式是一样的,颜色不同而已
*/

效果

3.2.1 flex-start 属性

当我们设置父容器 align-content 为 flex-start 时,效果如下

3.2.2 flex-end 效果
3.2.3 center
3.2.4 space-between
3.2.5 space-around
3.3 align-items 和 align-content 区别
  1. align-items适用于单行情况下,只有上对齐、下对齐、 居中和拉伸.
  2. align-content适应于换行(多行)的情况下(单行情况下无效),可以设置上对齐、下对齐、 居中、拉伸以及平均分配剩余空间等属性值。
  3. 总结就是单行找align-items多行找align-content

四、其它父类属性

4.1 flex-grow 使用

我们发现上面的布局留了了一点空隙,所以我们可以使用 flex-grow 补全这个空白,比如我们在紫色的 框框当中设置 flex-grow 属性,这样就把这个多余的部分给撑住了。

wxss

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.s2 {
  width: 100px;
  height: 100px;
  flex-grow: 1;
  background-color: rebeccapurple;
}

我们还可以在其他的盒子当中设置这个 flex-grow 属性,这样,这个盒子就会平分这个空间

4.1 flex-wrap 设置子元素是否换行
  1. flex-wrap: nowrap; 默认不换行
  2. flex-wrap: wrap; 会另起一行排列 默认情况下,flex 布局中默认是不换行的。如果排不下,会缩小盒子元素的宽度。

五、flex 布局之子项属性

5.1 align-self

控制子项在侧轴上的排列方式

可以运行单个项目与其他的项目有不同的对齐方式,可以覆盖 align-items 属性。默认为 auto,表示继承父类的 align-items 属性,如果没有父元素,则等同于 strtch

像这样,我们设置父亲属性为 align-items: flex-start ,给 4号各格子设置 align-self: flex-end; 就会出现如下效果

五、总结

  1. 事件绑定 分为冒泡事件和阻止事件,bind 默认为冒泡事件,catch为阻止事件,业务逻辑要分析清楚
  2. WXSS样式全局样式(template) 与局部样式(wxss)
  3. WXSS 的布局,display flex
    • 横向布局: justify-content 有5个属性,分别是
      • flex-start 靠左上角
      • flex-end 靠右上角
      • flex-center 居中处理
      • space-around 两端留空,均匀分布
      • space-between 首端两边,有多个方块,就会紧挨两端
      • space-evenlt 主轴均匀分布
    • 纵向布局:align-items 也有5个属性,分别是
      • flex-start 左上
      • flex-end 左下
      • center 靠左居中
      • stretch 拉伸
      • baseline 基线对齐
    1. flex 布局,修改轴参数
      • row 从左到右
      • row-reverse 从右到左
      • column 靠左,从上到下
      • column-reverse 靠左,从下到上
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
很棒很棒,十分感谢
很棒很棒,十分感谢
11点赞举报
谢谢~
谢谢~
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
看完这篇,对flex布局还不熟悉,那就来找我(flex布局最全详解)
传统的页面布局,基于盒子模型margin + border + padding + content,依赖 display + position + float。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
javascript艺术
2021/05/28
20K0
看完这篇,对flex布局还不熟悉,那就来找我(flex布局最全详解)
FLex布局详解
其余效果图 可自行复制代码,到自己vscode进行演示,可以更快的了解到flex的强大之处😼😼😼
心安事随
2024/07/29
1690
FLex布局详解
Flex入坑指南
弹性布局flex是一个几年前的CSS属性了,说它解放了一部分生产力不为过。至少解放了不少CSS布局相关的面试题 :) 之前网上流行的各种XX布局,什么postion: absolute+margin,float+padding,各种都可以使用flex来取代之。 早两年在使用的时候,还是会担心有兼容性问题的,某些手机在使用了auto-prefixer以后依然会出现不兼容的问题。 好在现在已经是2018年了,不必再担心那些老旧的设备,希望这篇文章能帮你加深对flex的认识。
贾顺名
2019/12/05
7200
CSS Flex弹性布局详解! (常用的12个属性)
这期是我陆陆续续花了几个小时的时间为大家整理的Flex 弹性布局方法,主要讲了Flex布局的12个常见属性,以及文章最后的一个简单的小案例及其答案,希望对大家有帮助。
用户9999906
2022/09/26
24.2K0
使用flex弹性布局来为微信小程序写自适应页面
    我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + position属性 + float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的float坍塌问题,另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。
用户9127725
2022/08/08
1.4K0
使用flex弹性布局来为微信小程序写自适应页面
flex布局
Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
阿超
2022/08/21
1.5K0
flex布局
微信小程序开发详解《五》布局基础
1:Flex布局 Flex布局如图所示 image.png 1.1 Flex容器属性 image.png 1.2 Flex容器内元素属性 image.png align如果定义会覆写掉容器属性中的justify-content,align-items设置的属性 微信小程序开发工程中,新建文件layout,然后新建各种文件(以layout命名), 在layout.wxml中加入如下代码: <view class="container1"> <view class="ite
极乐君
2018/02/05
2.5K0
微信小程序开发详解《五》布局基础
详解 CSS3中最好用的布局方式——flex弹性布局(看完就会)
当设置flex布局之后,子元素的float,clear,vertical-align属性将失效
坚毅的小解同志的前端社区
2022/11/28
1.8K0
详解 CSS3中最好用的布局方式——flex弹性布局(看完就会)
【前端攻略--HTML/CSS】弹性布局
布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
野原测试开发
2019/07/10
5.2K0
【前端攻略--HTML/CSS】弹性布局
微信小程序|flexbox layout—快速实现基本布局
flexbox layout——弹性盒子布局。弹性盒子可以快速的对小程序进行布局。一般传统的小程序布局方法对内容量少的页面而言很方便,但对页面比较复杂的来讲就很繁琐了。所以使用flexbox layout对小程序页面内容进行整体封装布局,这样既方便又快捷。那么如何使用弹性盒子快速实现小程序的基本布局呢?
算法与编程之美
2020/03/26
1.7K0
微信小程序|flexbox layout—快速实现基本布局
flex给我实现一个对角线布局
flex在css布局中的是一个经常考察的知识点,虽然垂直居中问题已经问得快烂大街了,flex你虽然总是在用,但是总会有你不知道的盲点
Maic
2022/07/28
7990
flex给我实现一个对角线布局
前端学习(19)~css3属性(十二):Flex布局图片详解
CSS3中的 flex 属性,在布局方面做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,适应性非常强。其强大的伸缩性和自适应性,在网页开中可以发挥极大的作用。
Vincent-yuan
2020/03/18
8110
Flex布局
Flex 是 Flexible Box 的缩写, 用来为盒状模型提供最大的灵活性,也被称为”伸缩布局”,”弹性布局”,”伸缩盒布局”,”弹性盒布局”。
赤蓝紫
2023/01/01
1.2K0
Flex布局
Flex弹性布局
取值:row(默认) | row-reverse | column | column-reverse
ymktchic
2022/01/18
1.6K0
Flex弹性布局
uni-app(3.flex布局)
在pages下新建页面flex-direction,并在pages.json中将flex-direction页面设为首页
玩蛇的胖纸
2021/06/24
1.8K0
Flex布局教程
网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
訾博ZiBo
2025/01/06
2300
Flex布局教程
flex 布局查漏补缺
平时开发各种布局基本上可以 flex 一把梭,不用再纠结 float 这个神奇属性了。但一直又没有专门去记忆一下 flex 的属性,开发的时候还是顺手百度下属性的含义,略显不够专业[旺柴]。索性抽时间把每个属性就都总结下吧,查漏补缺。
windliang
2022/09/23
7210
flex 布局查漏补缺
这次带大家彻底搞懂 flex 布局
flex 布局,即弹性布局,是前端开发中非常常用的布局方式。主要是馋它很简单就能让容器内元素水平垂直居中的能力。
前端西瓜哥
2022/12/21
1.5K0
这次带大家彻底搞懂 flex 布局
CSS 布局_2 Flex弹性盒
弹性盒,是一种布局方式,当页面需要适应不同的屏幕大小以及设备类型时,它依然能确保元素拥有更恰当的排布行为,弹性盒属于 CSS 3 部分,IE9 以下不支持,现代浏览器指的就是 IE9 及以上的浏览器
Nian糕
2018/08/21
1.7K0
CSS 布局_2 Flex弹性盒
IT课程 CSS基础 032_弹性布局 Flex
长久以来,CSS 布局中唯一可靠且跨浏览器兼容的创建工具只有 float 和 position。这两个工具大部分情况下都很好使,但是在某些方面它们具有一定的局限性,让人难以完成任务。
zhaoJian.Net
2024/04/03
2410
IT课程 CSS基础 032_弹性布局 Flex
相关推荐
看完这篇,对flex布局还不熟悉,那就来找我(flex布局最全详解)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验