首页
技术小册
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 | 开放接口(二):优化前后端登录代码,解决后端解密错误
当前位置:
首页>>
技术小册>>
微信小程序全栈开发实战(上)
小册名称:微信小程序全栈开发实战(上)
### 第10章 view容器组件及Flex布局(一):学习容器组件view及其重要属性 在微信小程序的开发中,`view`组件作为最基础的容器组件,扮演着至关重要的角色。它不仅是页面布局的基础单元,还承载着内容的展示与布局的灵活性。本章将深入解析`view`容器组件的基本用法、重要属性以及如何通过`Flex`布局来实现复杂且响应式的页面设计。 #### 10.1 引入`view`容器组件 在HTML中,我们通常使用`div`作为布局和内容的容器,而在微信小程序中,`view`组件则扮演了类似的角色。`view`是微信小程序中最基本的容器组件,用于包裹其他组件或内容,以实现页面结构的构建。它可以被视作一个块级元素,默认占据整行空间,但通过设置样式可以调整其行为。 ```xml <!-- 示例代码:使用view包裹内容 --> <view> <text>这是一个view容器内的文本内容</text> </view> ``` #### 10.2 `view`的重要属性 虽然`view`组件本身没有太多专属的属性(相对于其他特定功能的组件而言),但它作为容器,其样式属性(如`class`、`style`)的使用极为关键,能够直接影响其内部内容的展示效果。此外,还有一些通用的属性如`id`、`hidden`等,也值得了解。 - **`class`**:用于指定组件的样式类,在WXSS(微信小程序样式表)中定义具体的样式规则。通过`class`可以实现组件样式的复用和快速修改。 - **`style`**:直接在组件上定义内联样式。虽然方便,但过多使用会导致代码难以维护,建议仅在需要动态改变样式时使用。 - **`id`**:为组件指定唯一标识符,常用于页面内的逻辑操作或样式定位,但需注意,在微信小程序中,直接使用`id`进行样式选择是不被推荐的,应通过`class`或`data-*`属性配合JS逻辑实现。 - **`hidden`**:布尔值属性,用于控制组件的显示与隐藏。当`hidden`为`true`时,组件不显示;为`false`时,组件正常显示。这是一个简单且高效的显示隐藏控制手段。 - **`data-*`**:自定义属性,允许开发者在组件上定义任意的数据字段,这些数据字段可以在JS中通过`this.dataSet`对象访问,为组件间的数据传递和交互提供了便利。 #### 10.3 Flex布局基础 Flex布局(Flexible Box Layout)是一种为盒状模型提供最大灵活性的CSS布局方式,它允许容器内的项目能够按照一定方式在容器内伸缩,以最佳方式填充可用空间(即使它们的大小未知或是动态变化的)。在微信小程序中,通过给`view`容器设置Flex布局相关的样式属性,可以轻松实现复杂的页面布局设计。 ##### 10.3.1 Flex容器 任何容器都可以指定为Flex容器,通过设置`display: flex;`或`display: inline-flex;`(微信小程序中通常使用WXSS的`display: flex;`)来实现。在微信小程序中,`view`组件通过设置样式即可成为Flex容器。 ```xml <view class="flex-container"> <!-- 子元素 --> </view> ``` ```css .flex-container { display: flex; /* 其他Flex布局相关样式 */ } ``` ##### 10.3.2 Flex项目 Flex容器的直接子元素自动成为Flex项目(flex item),这些项目可以按照Flex容器的设置进行排列和伸缩。 #### 10.4 Flex容器属性 Flex容器有以下六个重要属性,这些属性作用于容器上,用于控制Flex项目的布局。 - **`flex-direction`**:定义主轴的方向(即项目的排列方向),可选值为`row`(默认值,水平方向,从左到右)、`row-reverse`(水平方向,从右到左)、`column`(垂直方向,从上到下)和`column-reverse`(垂直方向,从下到上)。 - **`flex-wrap`**:定义当Flex项目无法全部容纳在Flex容器中时,是否换行显示,可选值为`nowrap`(默认值,不换行)、`wrap`(换行)和`wrap-reverse`(反向换行)。 - **`flex-flow`**:`flex-direction`和`flex-wrap`的简写形式,默认值为`row nowrap`。 - **`justify-content`**:定义项目在主轴上的对齐方式,可选值包括`flex-start`(默认值,项目靠近起始边对齐)、`flex-end`(项目靠近结束边对齐)、`center`(项目居中对齐)、`space-between`(两端对齐,项目之间的间隔相等)、`space-around`(每个项目两侧的间隔相等,所以项目之间的间隔比项目与边框的间隔大一倍)等。 - **`align-items`**:定义项目在交叉轴上的对齐方式,可选值与`justify-content`类似,但作用于交叉轴。 - **`align-content`**:当Flex容器有多行项目时,此属性用于定义多行在交叉轴上的对齐方式,其可选值与`align-items`类似,但效果作用于行与行之间。 #### 10.5 Flex项目属性 Flex项目也有几个重要属性,用于控制项目在Flex容器中的具体表现。 - **`flex-grow`**:定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。 - **`flex-shrink`**:定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 - **`flex-basis`**:定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。默认值为`auto`,即项目的本来大小。 - **`flex`**:`flex-grow`、`flex-shrink`和`flex-basis`的简写,默认值为`0 1 auto`。后两个属性可选。 - **`align-self`**:允许单个项目有与其他项目不一样的对齐方式,可覆盖`align-items`属性。默认值为`auto`,表示继承父元素的`align-items`属性,如果没有父元素,则等同于`stretch`。 #### 10.6 实战案例:利用Flex布局实现响应式布局 假设我们需要实现一个新闻列表页面,要求列表项水平排列,且在不同屏幕尺寸下都能保持良好的展示效果。 ```xml <!-- news-list.wxml --> <view class="news-list"> <view class="news-item" wx:for="{{newsList}}" wx:key="id"> <text>{{item.title}}</text> <text>{{item.date}}</text> </view> </view> ``` ```css /* news-list.wxss */ .news-list { display: flex; flex-wrap: wrap; /* 允许换行 */ padding: 10px; justify-content: space-between; /* 两端对齐,避免项目紧贴边缘 */ } .news-item { flex: 1; /* 允许项目在必要时伸缩 */ margin-bottom: 10px; /* 底部间隔 */ padding: 10px; background-color: #f5f5f5; border-radius: 5px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } /* 响应式调整 */ @media (max-width: 600px) { .news-item { flex: none; /* 禁止在小屏幕上伸缩 */ width: 100%; /* 强制占满整行 */ } } ``` 在这个例子中,我们使用了Flex布局的`flex-wrap`属性来允许项目换行显示,并通过`justify-content`属性实现了项目之间的间隔。同时,通过`@media`查询为不同屏幕尺寸设置了不同的样式规则,以实现响应式布局。这样,无论是在大屏设备还是小屏设备上,新闻列表都能保持良好的展示效果。 ### 结语 通过本章的学习,我们深入了解了`view`容器组件的基本用法、重要属性,以及如何通过Flex布局来实现复杂且响应式的页面设计。Flex布局的强大之处在于其灵活性和响应性,能够轻松应对各种布局需求。在未来的开发中,掌握并熟练运用Flex布局将极大地提升你的页面布局能力。
上一篇:
09 | rich-text组件:如何单击预览rich-text中的图片并保存?
下一篇:
11 | view容器组件及Flex布局(二):介绍flex布局中常用的样式及样式值
该分类下的相关小册推荐:
微信小程序与云开发(下)
微信小程序全栈开发实战(中)
微信小程序底层框架实现原理
微信小程序与云开发(上)
微信小程序全栈开发实战(下)
微信小程序与云开发(中)