【愚公系列】《微信小程序与云开发从入门到实践》013-可拖曳容器组件
| 标题 | 详情 |
|---|---|
| 作者简介 | 愚公搬代码 |
| 头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
| 近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 |
| 博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
| 欢迎 | 👍点赞、✍评论、⭐收藏 |
🚀前言
在现代应用开发中,用户交互的灵活性和直观性越来越受到重视。微信小程序的可拖曳容器组件正是为了满足这一需求而设计的,它允许用户通过简单的拖动操作,自由调整内容的位置和布局。这种交互方式不仅提升了用户体验,还为开发者提供了更多的创意空间,帮助他们创建更加动态和个性化的应用。
本篇文章将深入探讨微信小程序中的可拖曳容器组件,详细介绍其基本概念、常用属性以及如何在实际项目中实现这个功能。我们将结合实例,展示如何通过可拖曳容器组件提升小程序的交互性和用户友好度。
无论你是刚刚踏入小程序开发领域的新手,还是希望丰富应用功能的经验开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索可拖曳容器组件的应用潜力,创造出更加生动和引人入胜的小程序吧!
🚀一、可拖曳容器组件
当页面内某些组件的位置支持用户拖曳设置时,就可以使用可拖曳的容器组件movable-area。movable-area组件可以理解为一块支持内部组件拖曳移动的区域。其内的子组件必须是movable-view才能支持拖曳操作。
🔎1.可拖曳容器组件示例
🦋1.1 步骤 1: 创建页面文件
首先,在示例项目的 pages 文件夹下新建一个名为 movableDemo 的页面。
🦋1.2 步骤 2: 编写 movableDemo.wxml 文件
在 movableDemo.wxml 文件中,编写如下代码:
<!-- pages/movableDemo/movableDemo.wxml -->
<movable-area class="movable">
<movable-view class="block" direction="all">色块 1</movable-view>
<movable-view y="60" class="block" direction="horizontal">色块 2</movable-view>
<movable-view y="120" class="block" direction="vertical">色块 3</movable-view>
</movable-area>
在上述代码中,在页面中创建了 movable-area 容器,容器内放置了 3 个子组件,都是 movable-view 组件。对于这 3 个子组件,分别设置为可任意方向拖曳移动、可水平方向拖曳移动和可竖直方向拖曳移动。
🦋1.3 步骤 3: 编写 movableDemo.wxss 文件
在 movableDemo.wxss 文件中简单实现一下样式,代码如下:
/* pages/movableDemo/movableDemo.wxss */
.movable {
width: 100%;
height: 300px;
background-color: gray;
}
.block {
background-color: red;
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
color: wheat;
}
在上述样式中,我们设置了 movable 容器的宽度和高度,并为 block 子组件设置了背景颜色、尺寸、文本居中等样式。
🦋1.4 编译代码
编译代码后,效果如图所示。我们可以尝试对页面中 3 个色块进行拖曳移动,移动后可发现:
- 第一个色块可以任意方向拖曳移动。
- 第二个色块只能在水平方向拖曳移动。
- 第三个色块只能在竖直方向拖曳移动。

这样,我们就完成了一个简单的可拖曳色块的页面实现。
🔎2.movable-area组件与 movable-view 组件
🦋2.1 movable-area
| 属性名 | 类型 | 意义 |
|---|---|---|
| scale-area | 布尔值 | 设置 movable-area 区域是否支持缩放操作 |
movable-area 使用虽然非常简单,但是有一点需要注意,movable-area 必须设置 width 和 height 属性,如果不设置,默认的宽高为 10px。当 movable-view 组件的尺寸小于 movable-area 时,movable-view 只能在 movable-area 区域内进行移动。当 movable-view 组件尺寸大于 movable-area 时,其宽高设为 scroll-view 非常类似了,可以进行移动和缩放并展示完整的视图。同时,它也必须放置在 movable-area 组件内部,否则不能支持拖拽与缩放。movable-view 是最复杂支持拖拽与滑动的视图组件,属性如表 3-7 所示。
🦋2.2 movable-view
| 属性名 | 类型 | 意义 |
|---|---|---|
| direction | 字符串 | 设置支持的移动方向,可设置为:
|
| inertia | 布尔值 | 设置移动是否有惯性,设置为 true 时,快速滑动组件可以使组件飘动一段距离 |
| out-of-bounds | 布尔值 | 设置移动过程中是否允许移动超出 movable-area 区域 |
| x | 数值或字符串 | 设置组件 x 轴的位置,代码改变此值会有移动动画产生 |
| y | 数值或字符串 | 设置组件 y 轴的位置,代码改变此值会有移动动画产生 |
| damping | 数值 | 设置阻尼系数,阻尼越大移动越快 |
| friction | 数值 | 设置摩擦系数,摩擦越小,值越大滚动越快 |
| disabled | 布尔值 | 此组件是否禁用 |
| scale | 布尔值 | 此组件是否支持双指缩放 |
| scale-min | 数值 | 设置缩放倍数的最小值,默认值为 0.5 |
| scale-max | 数值 | 设置缩放倍数的最大值,默认值为 10 |
| scale-value | 数值 | 设置当前组件的缩放倍数 |
| animation | 布尔值 | 设置是否使用动画 |
| bindchange | 函数 | 组件拖拽过程中的回调事件 |
| bindscale | 函数 | 组件缩放过程中的回调事件 |
| htouchmove | 函数 | 横向移动的触摸事件回调 |
| vtouchmove | 函数 | 纵向移动的触摸事件回调 |
🦋2.3 事件处理:bindchange
对于 bindchange 事件,有时需要知道触发它的来源。在其回调的参数中有 source 字段,这个字段表示了触发 bindchange 事件的原因。
source 字段的值与含义:
- 当
source值为touch时,表示bindchange事件是由用户拖曳触发的。 - 当
source值为touch-out-of-bounds时,表示bindchange事件是超出移动区域范围触发的。 - 当
source值为out-of-bounds时,表示bindchange事件是由超出移动区域范围后回弹效果触发的。 - 当
source值为inertia时,表示bindchange事件是由惯性效果触发的。 - 当
source值为空字符串时,表示bindchange事件是代码设置组件x或y属性移动触发的。
movable-view 组件布局与尺寸控制
movable-view组件默认采用的是绝对定位的布局方式,通常我们不会通过样式表对其位置进行设置,而是通过组件的x和y属性进行设置。movable-view组件必须设置样式表中的width和height属性来控制组件的尺寸大小。
- 点赞
- 收藏
- 关注作者
评论(0)