Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】《微信小程序与云开发从入门到实践》010-基础视图组件与滚动视图组件

【愚公系列】《微信小程序与云开发从入门到实践》010-基础视图组件与滚动视图组件

原创
作者头像
愚公搬代码
发布于 2025-01-13 07:33:11
发布于 2025-01-13 07:33:11
21100
代码可运行
举报
运行总次数:0
代码可运行

标题

详情

作者简介

愚公搬代码

头衔

华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。

近期荣誉

2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。

博客内容

.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

欢迎

👍点赞、✍评论、⭐收藏

🚀前言

微信小程序的开发中,组件的使用是构建用户界面的关键。基础视图组件和滚动视图组件作为小程序的重要组成部分,它们不仅帮助开发者快速创建美观的界面,还极大地提升了用户体验。基础视图组件提供了构建页面布局的基本元素,而滚动视图组件则为用户提供了流畅的滚动体验,适用于展示大量信息和内容的场景。

本篇文章将深入探讨微信小程序中的基础视图组件与滚动视图组件,详细介绍它们的特性、常用属性及用法示例。我们将通过实例来演示如何灵活运用这些组件,帮助你理解其在实际开发中的应用场景。

无论你是小程序开发的新手,还是希望提升界面设计能力的开发者,这篇文章都将为你提供实用的指导和灵感。让我们一起踏上探索基础视图组件与滚动视图组件的旅程,打造出更加出色的小程序应用!

🚀一、基础视图组件与滚动视图组件

基础视图组件可以用来承载文本的展示,也可以作为父视图来包装其他组件。小程序中最基础的视图组件是 view 组件,大部分时候,都会使用view 组件作为当前页面最下层的父组件。如果页面要渲染的内容过多,框架中也提供了scroll-view(滚动视图)组件,可以让我们在有限的设备屏幕中渲染更多的内容,用户可以通过滚动来查看内容中的一部分。

🔎1.测试工程搭建

🦋1.1 创建小程序项目

首先,创建一个名为 ContainerComponents 的小程序工程,用于编写测试代码。在创建时,您可以选择使用之前申请的账号,也可以使用测试账号。

🦋1.2 删除默认生成的冗余代码

在小程序的默认生成的工程中,logs 页面相关的代码通常是不必要的。为了简化项目,我们将删除 logs 页面及相关代码,只保留配置文件和 index 页面。

删除 logs 页面:

  • 删除 logs 页面相关的文件和代码。这样,项目结构会变得更加简洁。

🦋1.3 修改 app.json 配置

app.json 文件中,修改页面列表,确保只有 index 页面作为入口页面。

修改后的 app.json 配置如下:

代码语言:json
AI代码解释
复制
{
  "pages": [
    "pages/index/index"
  ]
}

🦋1.4 清理 index.js 文件

接下来,清理 index.js 文件中的冗余代码。默认生成的 index.js 文件可能包含一些额外的代码,您可以将其删除,只保留最基本的内容。

修改后的 index.js 文件如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// index.js
// 获取应用实例
const app = getApp()

Page({})

🦋1.5 清理 index.wxml 文件

同样,删除 index.wxml 文件中的冗余代码。index.wxml 文件是页面的结构文件,可以简化为最基本的内容。

修改后的 index.wxml 文件如下:

代码语言:xml
AI代码解释
复制
<!-- index.wxml -->
<view class="container"></view>

🔎2.view(视图)组件

🦋2.1 新建 viewDemo 页面

在工程的 pages 文件夹下,创建一个名为 viewDemo 的子文件夹,并在其中新建一个命名为 viewDemo 的页面。这样会生成以下文件:

  • pages/viewDemo/viewDemo.wxml
  • pages/viewDemo/viewDemo.wxss
  • pages/viewDemo/viewDemo.js
  • pages/viewDemo/viewDemo.json

🦋2.2 检查 app.json 文件

微信开发者工具会自动将新创建的页面注册到 app.json 中。可以打开 app.json 文件,确认页面列表中已包含新创建的 viewDemo 页面。

修改后的 app.json 文件应如下所示:

代码语言:json
AI代码解释
复制
{
  "pages": [
    "pages/index/index",
    "pages/viewDemo/viewDemo"
  ]
}

🦋2.3 修改 index.wxml 页面

index.wxml 页面中,添加一个跳转到 viewDemo 页面的链接。通过 navigator 组件实现页面跳转。

修改后的 index.wxml 文件如下:

代码语言:xml
AI代码解释
复制
<!-- index.wxml -->
<view class="container">
  <navigator url="../viewDemo/viewDemo">view 视图</navigator>
</view>

🦋2.4 重新编译并运行工程

重新编译工程后,在模拟器中点击主页上的“view 视图”链接,应该可以跳转到新创建的 viewDemo 页面。

🦋2.5 编写 viewDemo.wxml 页面内容

viewDemo.wxml 文件中,编写如下测试代码,展示两个部分的布局。

代码语言:xml
AI代码解释
复制
<!-- pages/viewDemo.wxml -->
<view class="container">
  <!-- 第一部分: 纵向布局 -->
  <view class="section1">
    <view class="block1">视图 1</view>
    <view class="block2">视图 2</view>
    <view class="block3">视图 3</view>
  </view>

  <!-- 第二部分: 横向布局 -->
  <view class="section2">
    <view class="block1">视图 1</view>
    <view class="block2">视图 2</view>
    <view class="block3">视图 3</view>
  </view>
</view>

在上面的代码中,页面被分为两个部分:

  • section1 部分使用纵向排列,内部有三个子视图。
  • section2 部分使用横向排列,同样包含三个子视图。

🦋2.6 编写 viewDemo.wxss 样式代码

viewDemo.wxss 文件中,使用 Flex 布局 来实现这两个部分的布局,具体的样式代码如下:

代码语言:css
AI代码解释
复制
/* pages/viewDemo.wxss */

/* section1 部分:纵向排列 */
.section1 {
  display: flex;
  flex-direction: column; /* 垂直排列 */
  border: 1px red solid;
  width: calc(100% - 2px);
  height: 200px;
  margin-bottom: 10px;
}

/* section2 部分:横向排列 */
.section2 {
  display: flex;
  border: 1px red solid;
  width: calc(100% - 2px);
  height: 200px;
  margin-bottom: 10px;
}

/* 视图块样式 */
.block1, .block2, .block3 {
  flex: 1; /* 均分空间 */
  padding: 10px;
}

.block1 {
  background-color: greenyellow;
}

.block2 {
  background-color: pink;
}

.block3 {
  background-color: wheat;
}

在这段样式中:

  • section1 使用 flex-direction: column 实现纵向排列,三个子视图 (block1, block2, block3) 会平均分配父容器的高度。
  • section2 使用默认的横向排列,三个子视图同样会均分父容器的宽度。
  • 每个视图块的背景色设置为不同的颜色,以便区分。

🦋2.7 运行效果

运行上述代码后,您应该能够在页面中看到两个区域:

  • section1:纵向排列的三个视图,分别显示为绿色、粉色和小麦色。
  • section2:横向排列的三个视图,分别显示为相同的颜色。

🦋2.8 view 组件简介

view 是小程序中最基础的组件,常用于作为其他组件的父容器来控制布局。它没有特别复杂的功能,但非常适合作为布局容器使用。在实际开发中,view 组件通常用来包裹其他组件并设置布局样式。

属性名

类型

作用

hover-class

字符串

设置用户按下此视图时的样式类

hover-stop-propagation

布尔值

设置当用户按下此组件时,是否阻止其父组件显示点击态

hover-start-time

数值

设置用户按下此组件后多久展示点击态,默认为 50ms

hover-stay-time

数值

设置用户取消按下组件时,点击态的保留时间

需要注意,view 组件中的子组件如果超出了view组件本身,超出部分将无法展示,如果需要滚动查看,则需要使用scroll-view组件。

🔎3.scroll-view(滚动视图)组件

🦋3.1 创建 scrollDemo 页面

在示例项目的 pages 文件夹下,新建一个名为 scrollDemo 的页面。在 index.wxml 中添加一个入口链接,跳转到 scrollDemo 页面。

修改 index.wxml 文件:

代码语言:xml
AI代码解释
复制
<!-- index.wxml -->
<view class="container">
  <navigator url="../scrollDemo/scrollDemo">scroll-view 视图</navigator>
</view>

🦋3.2 创建 scrollDemo 页面结构

可以将 viewDemo.wxml 中的代码复制到 scrollDemo.wxml 中,并进行一些修改以使用 scroll-view 组件。

修改后的 scrollDemo.wxml 文件:

代码语言:xml
AI代码解释
复制
<!--pages/scrollDemo/scrollDemo.wxml-->
<view class="container">
    <scroll-view scroll-y="true" scroll-top="100" class="section1">
        <view class="block1">视图1</view>
        <view class="block2">视图2</view>
        <view class="block3">视图3</view>
    </scroll-view>
    <scroll-view scroll-x="true" class="section2">
        <view class="block4">视图1</view>
        <view class="block5">视图2</view>
        <view class="block6">视图3</view>
    </scroll-view>
</view>

🦋3.3 编写样式代码

scrollDemo.wxss 文件中,针对 scrollDemo 页面中的样式进行设置。

修改后的 scrollDemo.wxss 文件:

代码语言:css
AI代码解释
复制
/* pages/scrollDemo/scrollDemo.wxss */
.section1 {
    border: 1pt red solid;
    width: calc(100% - 2pt);
    height: 200px;
    margin-bottom: 10px;
}

.section2 {
    border: 1pt red solid;
    width: calc(100% - 2pt);
    height: 200px;
    margin-bottom: 10px;
    position: relative;
}

.block1 {
    height: 100px;
    background-color: greenyellow;
}
.block2 {
    height: 100px;
    background-color: pink;
}
.block3 {
    height: 100px;
    background-color: wheat;
}

.block4 {
    width: 150px;
    height: 200px;
    background-color: greenyellow;
    position: absolute;
}
.block5 {
    width: 150px;
    height: 200px;
    background-color: pink;
    position: absolute;
    left: 150px;
}
.block6 {
    width: 150px;
    height: 200px;
    background-color: wheat;
    position: absolute;
    left: 300px;
}

🦋3.4 重新编译并运行工程

重新编译工程后,将会看到页面上的两个区域:

  • 第一块区域section1)支持 Y 轴方向上的滚动。
  • 第二块区域section2)支持 X 轴方向上的滚动。

用户可以在模拟器或实际设备上手指滑动这两个区域,体验滚动视图的效果。

🦋3.5 配置 scroll-view 的属性

在上面的示例中,对于 scroll-view 组件,我们使用了 scroll-yscroll-x 属性,分别设置是否支持 Y 轴和 X 轴方向上的滚动。scroll-view 组件还提供了许多可配置的属性,如表所示:

属性名

类型

作用

scroll-x

布尔值

设置是否支持横向滚动

scroll-y

布尔值

设置是否支持纵向滚动

upper-threshold

数值或字符串

设置距离顶部/左侧多远时触发 scrolltoupper 事件

lower-threshold

数值或字符串

设置距离底部/右侧多远时触发 scrolltolower 事件

scroll-top

数值或字符串

设置竖向滚动条位置

scroll-left

数值或字符串

设置横向滚动条位置

scroll-into-view

字符串

值为某子元素 id,将滚动到该元素

scroll-with-animation

布尔值

在设置滚动条位置时,是否使用过渡动画

enable-back-to-top

布尔值

控制是否允许点击顶部状态栏滚动到顶部(iOS 平台)

enable-flex

布尔值

设置是否启用 flexbox 布局模型

scroll-anchoring

布尔值

设置滚动条位置是否锚定,即内容变化而不抖动

refresher-enabled

布尔值

设置是否启用下拉刷新

refresher-threshold

数值

设置下拉刷新默认触发距离

refresher-default-style

字符串

设置下拉刷新区域样式,可设置为:

  • block: 黑色模式

  • white: 白色模式

  • none: 不使用默认样式

refresher-background

字符串

设置下拉刷新区域的背景颜色

refresher-triggered

布尔值

当前下拉刷新的状态,true 表示激活,false 表示未激活

enhanced

布尔值

是否启用 scroll-view 的增强特性

bounces

布尔值

设置是否开启 iOS 平台的边界弹性效果,需优先开启 enhanced

show-scrollbar

布尔值

设置是否显示滚动条,需优先开启 enhanced

paging-enabled

布尔值

设置是否开启分页滚动效果,需优先开启 enhanced

fast-deceleration

布尔值

设置是否开启高速滑动减速效果,需优先开启 enhanced

binddragstart

函数

滑动开始时的事件回调,需优先开启 enhanced

binddragging

函数

拖出过程中的事件回调,需优先开启 enhanced

binddragend

函数

拖出后末端的事件回调,需优先开启 enhanced

bindscrolltoupper

函数

滚动到顶部/左侧时触发的回调

bindscrolltolower

函数

滚动到底部/右侧时触发的回调

bindscroll

函数

滚动时触发的事件

bindrefresherpulling

函数

滚动时触发的事件

bindrefresherrefresh

函数

下拉刷新触发时下拉触发的回调

bindrefresherrestore

函数

下拉刷新复位时触发的回调

bindrefresherabort

函数

下拉刷新中止时触发的回调

可以看到,scroll-view 组件的可配置属性很多,无须全都记住,只需要了解scroll-view 所支持的属性的基本用法,在需要的时候可以通过查表来查看具体的属性名。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零基础微信小程序开发——小程序的宿主环境(保姆级教程+超详细)
宿主环境(host environment)指的是程序运行所必须的依赖环境。例如: Android 系统和 iOS 系统是两个不同的宿主环境。安卓版的微信 App 是不能在 iOS 环境下运行的,所以,Android 是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的!
小白的大数据之旅
2025/05/16
500
零基础微信小程序开发——小程序的宿主环境(保姆级教程+超详细)
手把手带你学习微信小程序 —— 七 (view 视图组件学习)
不说多的,创建一个新的小程序项目,然后我们直接在 index.wxml 和 index.wxss 进行修改
Gorit
2021/12/08
1.7K0
手把手带你学习微信小程序 —— 七 (view 视图组件学习)
与 Cursor AI 对话编程:2小时开发报修维修微信小程序
本文记录了如何通过与 Cursor AI 对话,全程不写一行代码的情况下,完成一个完整的报修小程序。整个过程展示了 AI 如何帮助我们:
热心的程序员
2024/12/11
2920
【愚公系列】《微信小程序与云开发从入门到实践》011-滑块容器组件
在微信小程序的开发过程中,用户体验的提升往往依赖于优秀的界面设计和交互效果。滑块容器组件作为一种常用的UI组件,能够实现内容的横向滑动展示,为用户提供直观而灵活的浏览体验。无论是在产品展示、图片浏览,还是在信息分类中,滑块容器都能有效地组织和呈现信息,让用户在有限的空间内获取更多的内容。
愚公搬代码
2025/01/13
2070
【愚公系列】《微信小程序与云开发从入门到实践》035-在小程序中使用动画
随着移动互联网的快速发展,小程序以其轻便、便捷的特性,受到了越来越多用户的青睐。而在用户体验日益重要的今天,动画作为增强交互效果和视觉吸引力的重要手段,正逐渐成为小程序开发中的关键元素。
愚公搬代码
2025/01/24
2980
Belinda的小程序踩坑记(一)
微信小程序出来已有段时间,虽还在内测阶段。利用空闲时间,我把蜂贷微信项目部分迁移到小程序上。 目录结构 小程序的主体由三个文件组成,这三个文件要放在项目的根目录下,分别是 1、app.js 配置小程序的逻辑 2、app.json 公共设置 3、app.wxss 公共样式 小程序可以自定义 page,但是 page 需要在 app.json 中做出声明,不然IDE会报错,找不到页面。小程序的页面由四个文件组成,分别是 1、.js文件 页面逻辑 2、.wxml 视图层文件,页面结构 3、.wxss 样式文件,页
极乐君
2018/02/05
1.3K0
Belinda的小程序踩坑记(一)
【愚公系列】《微信小程序与云开发从入门到实践》005-小程序项目的基本结构
在当今移动互联网的迅猛发展中,小程序以其轻便、高效的特点,逐渐成为了吸引用户的重要工具。无论是电商、社交还是生活服务,各类小程序如雨后春笋般涌现,改变了我们与应用的交互方式。然而,很多开发者在初次接触小程序时,往往对其项目结构感到迷茫。了解小程序的基本结构不仅是开发的第一步,更是构建高效、可维护应用的基础。
愚公搬代码
2025/01/10
1700
小程序学习笔记
 一、小程序文档笔记 默认开发目录 开发目录解析 1.  app.js、app.json、app.wxss 这三个文件必须有不能删掉。 一个小程序主体部分由这三个文件组成,而且必须放在项目的根目录
xing.org1^
2018/05/17
2.5K0
【愚公系列】《微信小程序与云开发从入门到实践》013-可拖曳容器组件
在现代应用开发中,用户交互的灵活性和直观性越来越受到重视。微信小程序的可拖曳容器组件正是为了满足这一需求而设计的,它允许用户通过简单的拖动操作,自由调整内容的位置和布局。这种交互方式不仅提升了用户体验,还为开发者提供了更多的创意空间,帮助他们创建更加动态和个性化的应用。
愚公搬代码
2025/01/14
1330
微信小程序框架与组件
查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
达达前端
2019/07/03
1.3K0
微信小程序框架与组件
打造新闻阅读微信小程序:从列表展示到实用功能一应俱全
微信小程序作为一个轻量级的应用平台,为用户提供了便捷的信息获取和服务体验。本文将以一个新闻阅读类的微信小程序为例,详细介绍如何实现新闻列表展示、图片加载、Tab滑动切换、获取数据、处理图片加载失败、数据缓存、分页加载、错误处理、下拉刷新、列表项点击跳转、用户授权、搜索功能、图片预览和小程序分享等功能。跟随本文的步骤,你将轻松掌握微信小程序的开发技巧,为用户打造一款实用且美观的新闻阅读应用。
陆业聪
2024/07/23
4040
打造新闻阅读微信小程序:从列表展示到实用功能一应俱全
微信小程序开发基础
查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
达达前端
2019/07/03
3.6K0
微信小程序开发基础
【愚公系列】《微信小程序与云开发从入门到实践》056-迷你商城小程序的开发(电商应用首页开发)
随着移动互联网的快速发展,电商行业也迎来了新的机遇与挑战。迷你商城小程序作为一种便捷的购物工具,逐渐成为消费者线上购物的重要选择。它不仅具备快速加载、易于分享的特点,还能为用户提供个性化的购物体验。
愚公搬代码
2025/01/31
2210
5分钟入门 - 微信小程序开发
如果你还没有微信公众平台的账号,请先进入 微信公众平台 首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序” 即可。
用户6808043
2022/02/25
8670
如何使用小程序视图容器组件
在上一篇文章中,我们介绍了小程序入门开发的基础步骤,并通过几个Hello Word例子,让大家体验了下小程序的组件及API使用,接下来的教程中,我们将教大家详细使用每个组件及API的使用。
宮園薰
2018/11/05
9.7K0
如何使用小程序视图容器组件
小程序开发基础-scroll-view 可滚动视图区域
查看官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/
达达前端
2019/07/03
2.6K0
小程序开发基础-scroll-view 可滚动视图区域
03-微信小程序常用组件-视图容器组件
微信小程序包含了六大组件:视图容器、基础内容、导航、表单、互动和导航。这些组件可以通过WXML和WXSS进行布局和样式设置,从而构建出丰富的小程序界面和交互体验。
度假的小鱼
2023/11/21
4590
03-微信小程序常用组件-视图容器组件
【愚公系列】《微信小程序与云开发从入门到实践》015-组件的布局
在微信小程序的开发过程中,组件布局是构建用户界面的核心要素之一。合理的布局不仅能提升界面的美观性,更能显著增强用户体验。随着小程序功能的不断丰富,布局的灵活性和适应性变得尤为重要。本篇文章将重点探讨微信小程序中组件的布局方式,包括常用的布局模型、布局技巧以及在实际开发中的应用实例。
愚公搬代码
2025/01/15
1970
微信小程序开发实战(1):容器组件
本文主要介绍了滚动视图组件(scroll-view)的各种常用功能,例如,垂直和水平滚动、滚动事件等,并通过例子代码来演示这些功能的使用方法。
蒙娜丽宁
2020/05/21
1.4K0
微信小程序开发实战(1):容器组件
微信小程序初体验
本文讲述了一位开发者在使用微信开发者工具进行小程序开发过程中,从编写代码、调试、优化,到项目发布上线的整个流程。同时,介绍了开发过程中遇到的具体问题和解决方法,包括页面加载、交互逻辑、性能优化、小程序云开发等。通过本篇文章,读者可以了解到小程序开发的整体流程,并学会如何解决开发过程中遇到的问题。
IMWeb前端团队
2018/01/08
3.1K0
微信小程序初体验
推荐阅读
相关推荐
零基础微信小程序开发——小程序的宿主环境(保姆级教程+超详细)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验