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

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

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

小程序 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 荐 用 ActFramework 写一个
看到 t-io 老谭的 用t-io来写一个网页聊天室或客服是个怎样的体验, 一时手痒, 就打算用 ActFramework 来写一个网页聊天室, 看看是什么体验. 废话少说,撸起袖子就是干。 1. 创建项目 运行下面的命令创建一个新的 ActFramework 应用项目: mvn archetype:generate -B \ -DgroupId=com.myproj \ -DartifactId=chatroom \ -DarchetypeGroupId=org.actframew
老码农
2018/06/20
1.1K0
ActFramework 入门指南
这篇文章,将带你体验并展开一个基本的MVC项目。 (Controller,Service,Dao标准结构)
老码农
2019/07/04
7810
ActFramework 入门指南
Spring 全家桶之 Spring Boot 2.6.4(八)- 嵌入式 Servlet 容器(Part B)
Spring Boot除了支持内嵌的Tomcat Servlet容器,还支持Jetty和Undertow两种Servlet容器
RiemannHypothesis
2022/09/26
6290
Spring 全家桶之 Spring Boot 2.6.4(八)- 嵌入式 Servlet 容器(Part B)
JFinal极速开发框架使用笔记
记录第一次使用JFinal,从简单的框架搭建到增删改查,从自带的方法到正常框架习惯的使用方式。  JFinal官网:http://www.jfinal.com/ JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率。 JFinal有如下主要特点: MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xm
二十三年蝉
2018/02/28
2.8K0
JFinal极速开发框架使用笔记
一些流行Java MVC框架的调用栈
今天在ActFramework群里面谈及了Spring的调用栈, 大家都觉得调用栈太长了影响性能,也不利于调试. 我这边刚好有一个Web框架性能测试项目的代码, 其中有一些常见的Java MVC框架,包括Springboot, JFinal, NinjaFramework等, 我在代码中添加了 new RuntimeException().printStackTrace(); 用来打印调用到应用逻辑(控制器)的调用栈.下面是我的测试结果: ActFramework java.lang.RuntimeExce
老码农
2018/06/27
1.1K0
Spring Boot整合模板引擎
Spring Boot支持FreeMarker模板引擎,它是在Spring MVC基础上加入了自动配置的特性,在使用FreeMarker模板引擎的时候,需要在resources文件夹内建立static文件夹存放静态资源(一般包括css、images、js),还要建立一个templates文件,用于存放FreeMarker模板。
itlemon
2020/04/03
6600
基于Spring Boot 的Blog开发 原
之前写过几篇关于利用Spring MVC来开发的博客,从博客下面的评论以及GitHub上的Issues看还是会出现许多的问题,且大部分的问题都出在配置上。虽然说Spring MVC的配置较SSH简化了不少,但是在使用过程中仍然会觉得配置的吃力。
Gaussic
2018/08/17
5330
基于Spring Boot 的Blog开发
                                                                            原
《Kotin 极简教程》第11章 使用Kotlin 集成 SpringBoot开发Web服务端第11章 使用Kotlin集成SpringBoot开发Web服务端《Kotlin极简教程》正式上架:
我们在前面第2章 “ 2.3 Web RESTFul HelloWorld ” 一节中,已经介绍了使用 Kotlin 结合 SpringBoot 开发一个RESTFul版本的 Hello World。当然,Kotlin与Spring家族的关系不止如此。在 Spring 5.0 M4 中引入了一个专门针对Kotlin的支持。
一个会写诗的程序员
2018/08/17
3.3K0
《Kotin 极简教程》第11章 使用Kotlin 集成 SpringBoot开发Web服务端第11章 使用Kotlin集成SpringBoot开发Web服务端《Kotlin极简教程》正式上架:
Spring Boot(1)-构建应用实践
Spring 框架作为目前非常流行的一个 Java 应用开发框架,它所包含的内容是非常繁多的。Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。要在这些子项目之间进行选择,并快速搭建一个可以运行的应用是比较困难的事情。
黄规速
2022/04/14
5180
Spring Boot(1)-构建应用实践
Java学习笔记-全栈-web开发-19-SpringBoot入门项目创建与整合
Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题。每个子项目都有一定的学习曲线。开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的解决方案。在如何使用这些组件上,并没有相关的最佳实践提供指导。对于新接触 Spring 框架的开发人员来说,并不知道如何更好的使用这些组件。Spring 框架的另外一个常见问题是要快速创建一个可以运行的应用比较麻烦。
devi
2021/08/18
5910
Spring认证指南:了解如何使用 Spring Security 保护您的 Web 应用程序
本指南将引导您完成使用受 Spring Security 保护的资源创建简单 Web 应用程序的过程。
IT胶囊
2022/03/07
1.4K0
Spring认证指南:了解如何使用 Spring Security 保护您的 Web 应用程序
SpringBoot整合Shiro_HelloWorld
Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。
CBeann
2023/12/25
2630
SpringBoot整合Shiro_HelloWorld
Spring Security 入门(五):在 Spring-Boot中的应用
前言 本文作为入门级的DEMO,完全按照官网实例演示; 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot</groupId>
程序猿DD
2018/03/26
1.7K0
Spring Security 入门(五):在 Spring-Boot中的应用
《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
一个会写诗的程序员
2018/08/20
1.2K0
《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
springboot整合shiro(含MD5加密)写在前面:开发环境:项目开始:
写在前面: 关于shiro介绍以及shiro整合spring,我在另一篇文章中已详细介绍,此处不作说明,请参考spring整合shiro。 开发环境: 1、mysql - 5.7.21 2、navicat(mysql客户端管理工具) 3、idea 2017 4、jdk9 5、tomcat 8.5 6、springboot 7、mybatis 3 8、shiro 9、maven 项目开始: 一、数据库设计: 注:数据库三张表和spring整合shiro中的一模一样,在那边已经详细说明,这里直接
贪挽懒月
2018/05/18
10.5K0
第7章 Spring Boot集成模板引擎小结
因为Spring Boot其实是对Spring生态的封装整合打包,以简化开发中使用Spring框架。所以 Spring Boot在集成模板引擎过程中,其实就是对传统SpringMVC集成对应模板引擎的打包自动化配置。
一个会写诗的程序员
2018/08/20
2.6K0
第7章 Spring Boot集成模板引擎小结
Spring Boot 模拟登陆功能
一个系统,离不开用户的鉴权。本文,我们来讲讲怎么通过 Spring Boot 实现模拟登陆功能~
Jimmy_is_jimmy
2023/07/09
3290
Spring Boot 模拟登陆功能
Spring Boot 与 kotlin 使用Thymeleaf模板引擎渲染web视图
在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源,使用Spring Boot 与 kotlin如何去支持这些静态资源?,很简单。
全科
2018/08/15
1.6K0
Spring boot之hello word
环境准备 一个称手的IDE(首选Myeclipse,也可以选Eclipse) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用I
xiangzhihong
2018/02/05
6730
Jetty入门
总述 同tomcat一样,jetty也是一个servlet引擎,jetty的神奇之处在于,jetty不仅可以作为一个web应用的容器,它甚至还可以作为一个程序中的插件来通过main函数加载web应用程序本身。 Jetty 是一个 Web server/servlet container, 支持 SPDY,WebSocket, OSGi, JMX,JNDI, JAAS 。Jetty非常高效而且灵活,Google App Engine 选择了Jetty,而放弃了Tomcat,或是其他的服务器。 Jetty ha
SecondWorld
2018/03/14
1.8K0
Jetty入门
推荐阅读
相关推荐
原 荐 用 ActFramework 写一个
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验