首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 初步介绍微信小程序
02 | 还有哪些其它公司的小程序产品
03 | 小程序的特点及开发能力
04 | 新的一年,微信小程序开放了哪些新功能?
05 | 小程序运行机制简介:从零构建一个Web App需要做哪些事情?
06 | 开发环境配置:创建你的第一个小程序项目
07 | icon组件:关于图标的4个实现方案
08 | progress组件:如何自定义实现一个环形进度条?
09 | rich-text组件:如何单击预览rich-text中的图片并保存?
10 | view容器组件及Flex布局(一):学习容器组件view及其重要属性
11 | view容器组件及Flex布局(二):介绍flex布局中常用的样式及样式值
12 | 可移动容器及可移动区域(一):学习使用movable-view与movable-area组件
13 | 可移动容器及可移动区域(二):如何实现侧滑删除功能
14 | scroll-view介绍:在小程序中如何实现滚动锚定?
15 | scroll-view介绍:如果渲染一个滚动的长列表?
16 | 滚动选择器(一):学习使用选择器组件
17 | 滚动选择器(二):使用两种方式自定义实现省、市、区三级联动的选择器
18 | 滑动选择器表单组件:如何基于wxs自定义一个竖向的slider?
19 | 页面链接组件:如何自定义一个导航栏?
20 | image媒体组件(上):如何实现图片的懒加载?
21 | image媒体组件(下):开发中经常遇到的问题?
22 | 如何实现直播间功能?(一):了解live-pusher、live-player组件的主要属性及使用限制
23 | 如何实现直播间功能?(二):如何开启、使用腾讯云的云直播功能
24 | 如何实现直播间功能?(三):安装与使用ffmepg,及使用ffmpeg进行推拉流验证
25 | 如何实现直播间功能?(四):使用live-pusher、live-player组件在小程序中实现直播功能
26 | 如何实现直播间功能?(五):同层渲染
27 | 如何实现直播间功能?(六):live-pusher、live-player组件在开发中的常见问题
28 | web-view(一):了解session、cookie等相关基本概念
29 | web-view(二):了解常见的四种鉴权方式
30 | web-view(三):如何使用koa框架,及如何进行热加载?
31 | web-view(四):如何在服务器端实现cookie与sesson的生成?
32 | web-view(五):如何将session存储到服务器端,及如何实现token验证?
33 | web-view(六):基于koa中间件,实现微信一键登录的后端接口
34 | web-view(七):实现微信用户一键登录
35 | web-view(八):了解正确的微信登录姿势
36 | web-view(九):web-view组件在开发的常见问题讲解
37 | WebGL介绍(一):了解WebGL相关的基础概念
38 | WebGL介绍(二):如何在小程序中取到WebGL上下文环境对象
39 | WebGL介绍(三):了解WebGL的世界坐标系
40 | WebGL介绍(四):重新认识右手坐标系及如何编写顶点着色器代码
41 | WebGL介绍(五):学习片断着色器编写,了解变量修饰变型uniform与attribute
42 | WebGL介绍(六):了解在WebGL中裁剪空间是如何裁剪出来的
43 | WebGL介绍(七):了解着色器变量值的绑定及三种三角形绘制模式之间的差异
44 | WebGL介绍(八):在着色器中使用共享变量,绘制一个颜色渐变的正方形
45 | WebGL介绍(九):完成动画
46 | WebGL介绍(十):绘制一个旋转的立方体
47 | WebGL介绍(十一):在3D绘制中使用纹理材质
48 | WebGL介绍(十二):如何创建相机、场景及光源
49 | WebGL介绍(十三):创建加载器、渲染器与控制器,完成3D模型文件的加载与展示
50 | 网络接口简介(一):如何使用wx.request接口
51 | 网络接口简介(二):将登录代码模块化封装
52 | 网络接口简介(三):Promise介绍及 6 个常用方法
53 | 网络接口简介(四):Promise三个方法any、all与race的使用介绍
54 | 网络接口简介(五):基于Promise+await、async关键字改写登录模块
55 | 网络接口简介(六):关于Page页面隐藏代码执行及Promise对象的catch处理的补充
56 | 网络接口简介(七):学习EventChannel对象
57 | 网络接口简介(八):观察者模式介绍及Event模块实现
58 | 网络接口简介(九):扩展wxp模块的request3方法,实现用户登录的自动融合
59 | tabBar组件(一):系统默认的tabBar组件如何开启及使用
60 | tabBar组件(二):基于系统提供的自定义方式,实现一个tabBar组件
61 | tabBar组件(三):通过自定义组件扩展的方式,给任意组件添加通用方法
62 | 开放接口(一):如何对Page进行全局扩展
63 | 开放接口(二):优化前后端登录代码,解决后端解密错误
当前位置:
首页>>
技术小册>>
微信小程序全栈开发实战(上)
小册名称:微信小程序全栈开发实战(上)
### 第十一章 | View容器组件及Flex布局(二):介绍Flex布局中常用的样式及样式值 在上一章节中,我们初步探索了微信小程序中的`view`容器组件及其作为Flex布局容器的基础用法。Flex布局,即弹性盒模型(Flexible Box Layout),为开发者提供了一种更加高效、灵活的方式来布局、对齐和分配容器中项目的空间,无论它们的大小是未知还是动态变化的。本章将深入介绍Flex布局中常用的样式属性及其对应的样式值,帮助读者更加熟练地掌握这一强大的布局工具。 #### 1. Flex容器属性 Flex布局首先作用于Flex容器上,通过为容器设置特定的样式属性来控制其子元素(Flex项目)的布局方式。以下是几个关键的Flex容器属性: ##### 1.1 `display: flex | inline-flex;` - **说明**:这是开启Flex布局的第一步,通过将容器的`display`属性设置为`flex`或`inline-flex`,可以将其转变为Flex容器。`flex`表示块级Flex容器,而`inline-flex`表示行内Flex容器。 - **示例**: ```css .container { display: flex; } ``` ##### 1.2 `flex-direction: row | row-reverse | column | column-reverse;` - **说明**:此属性定义了Flex容器中子元素的排列方向。`row`(默认值)表示水平方向从左到右排列;`row-reverse`表示水平方向从右到左排列;`column`表示垂直方向从上到下排列;`column-reverse`表示垂直方向从下到上排列。 - **示例**: ```css .container { flex-direction: column; } ``` ##### 1.3 `flex-wrap: nowrap | wrap | wrap-reverse;` - **说明**:默认情况下,Flex项目都尽量排在一行(或一列)上。`flex-wrap`属性定义了当Flex项目超出容器大小时是否换行以及如何换行。`nowrap`(默认值)表示不换行;`wrap`表示换行,且第一行在上方;`wrap-reverse`表示换行,但第一行在下方。 - **示例**: ```css .container { flex-wrap: wrap; } ``` ##### 1.4 `flex-flow` - **说明**:`flex-flow`是`flex-direction`和`flex-wrap`的简写形式,允许同时设置这两个属性。 - **示例**: ```css .container { flex-flow: column wrap; } ``` ##### 1.5 `justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;` - **说明**:此属性定义了Flex项目在主轴(main axis)上的对齐方式。主轴的方向由`flex-direction`决定。 - **示例**: ```css .container { justify-content: space-between; } ``` ##### 1.6 `align-items: flex-start | flex-end | center | baseline | stretch;` - **说明**:此属性定义了Flex项目在交叉轴(cross axis)上的对齐方式。交叉轴的方向垂直于主轴。 - **示例**: ```css .container { align-items: center; } ``` ##### 1.7 `align-content: flex-start | flex-end | center | space-between | space-around | stretch;` - **说明**:当Flex项目有多行时,此属性定义了行在交叉轴上的对齐方式。如果只有一行,则此属性不起作用。 - **示例**: ```css .container { align-content: space-around; } ``` #### 2. Flex项目属性 除了Flex容器属性外,Flex项目(即Flex容器的子元素)也有一系列属性,用于控制其在Flex容器中的具体表现。 ##### 2.1 `flex-grow: <number>;` - **说明**:此属性定义了Flex项目的放大比例,默认为0,即如果存在剩余空间,也不放大。如果所有项目的`flex-grow`属性都为1,则它们将等分剩余空间(如果有的话)。 - **示例**: ```css .item { flex-grow: 1; } ``` ##### 2.2 `flex-shrink: <number>;` - **说明**:此属性定义了Flex项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。如果所有项目的`flex-shrink`属性都为1,当空间不足时,它们将等比例缩小。 - **示例**: ```css .item { flex-shrink: 0; /* 不允许缩小 */ } ``` ##### 2.3 `flex-basis: <length> | auto;` - **说明**:在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为`auto`,即项目的本来大小。 - **示例**: ```css .item { flex-basis: 100px; } ``` ##### 2.4 `flex` - **说明**:`flex`属性是`flex-grow`、`flex-shrink`和`flex-basis`的简写,默认值为`0 1 auto`。后两个属性可选。 - **示例**: ```css .item { flex: 1; /* 等同于 flex: 1 1 0% */ } ``` ##### 2.5 `align-self: auto | flex-start | flex-end | center | baseline | stretch;` - **说明**:允许单个Flex项目有与其他项目不一样的对齐方式,可覆盖`align-items`属性。默认值为`auto`,表示继承父元素的`align-items`属性值。 - **示例**: ```css .item { align-self: flex-end; } ``` #### 3. 实战应用 理解了上述Flex布局中的常用样式及样式值后,我们来看几个实战应用的例子,以加深理解。 **例1:响应式布局** 假设我们需要设计一个响应式的导航栏,在小屏幕上水平排列,在大屏幕上垂直排列。 ```css .navbar { display: flex; flex-wrap: wrap; justify-content: space-between; } @media (max-width: 600px) { .navbar { flex-direction: column; } } ``` **例2:等宽卡片布局** 创建一个卡片列表,每个卡片等宽且自动填充剩余空间。 ```css .card-container { display: flex; justify-content: space-between; } .card { flex: 1; /* 使得所有卡片等宽 */ margin: 10px; padding: 20px; border: 1px solid #ccc; } ``` **例3:图片与文本对齐** 在一个Flex容器中,实现图片左对齐,文本右对齐的效果。 ```css .container { display: flex; align-items: center; /* 垂直居中 */ } .img-container { flex: 0 0 auto; /* 不放大缩小,保持原尺寸 */ margin-right: 20px; } .text-container { flex: 1; /* 填充剩余空间 */ text-align: right; } ``` 通过以上章节的详细讲解,我们深入了解了Flex布局中常用的样式属性及其样式值,并通过实战应用示例展示了如何在微信小程序中灵活运用这些属性来实现复杂的布局需求。希望这些内容能够帮助读者更好地掌握Flex布局,提升开发效率与界面布局的美观度。
上一篇:
10 | view容器组件及Flex布局(一):学习容器组件view及其重要属性
下一篇:
12 | 可移动容器及可移动区域(一):学习使用movable-view与movable-area组件
该分类下的相关小册推荐:
微信小程序与云开发(中)
微信小程序全栈开发实战(中)
微信小程序与云开发(上)
微信小程序全栈开发实战(下)
微信小程序与云开发(下)
微信小程序底层框架实现原理