应用开发中拖动功能是比较常见的 ,如滑动解锁,滑动验证码,实现一些小游戏,少儿编程中常见。

avm.js 是多端开发框架,一套代码可同时编译为APP 、小程序、h5。

avm 框架中实现拖动功能非常简单,先使用 movable-view 标签定义一个可移动区域,并指定宽高,代码如下:

<template>
<view class="page">
<movable-area class="movable-area"></movable-area>
</view>
</template>
<script>
export default {
name: 'test3',
apiready(){//like created },
data() {
return{ }
},
methods: { }
}
</script>
<style>
.page {
height: 100%;
} .movable-area {
width: 200px;
height: 200px;
background-color: #c4bfbf;
}
</style>

再使用 movable-view 标签定义一个可移动区域,指定宽高,代码如下:

<template>
<view class="page">
<safe-area>
<movable-area class="movable-area">
<movable-view class="movable-view"></movable-view>
</movable-area>
</safe-area>
</view>
</template>
<script>
export default {
name: 'test3',
apiready() {//like created },
data() {
return { }
},
methods: { }
}
</script>
<style>
.page {
height: 100%;
} .movable-area {
width: 200px;
height: 200px;
background-color: #c4bfbf;
} .movable-view {
height: 50px;
width: 50px;
background-color: #e0a9a9;
}
</style>

此时,我们运行代码,发现滑块还是不可拖动的。我们需要在 movable-view 上添加一个属性 direction;

direction="horizontal"

direction 属性指定滑块的移动方向,取值范围: all、vertical、horizontal、none;默认值none;

下面看一个简单的滑动验证的示例:

效果图:

实现代码:

<template>
<safe-area>
<scroll-view class="body">
<view class="section">
<movable-area class="movable-area">
<movable-view class="movable-view" direction="horizontal" onchange={this.onChange}>
<text>青</text>
</movable-view>
</movable-area>
<text v-if="this.data.isok" class="section-title">验证通过</text>
</view>
</scroll-view>
</safe-area>
</template>
<script>
export default {
name: 'test',
data() {
return {
x: 0,
y: 0,
"isok": false
}
},
methods: { onChange(e) {
console.log(JSON.stringify(e.detail))
if (124 < e.detail.x && e.detail.x < 135) {
this.data.isok = true;
}
},
}
}
</script>
<style>
.body {
width: 100%;
height: 100%;
}
.movable-area {
height: 50px;
width: 200px;
margin: 0 0 0 50px;
background-color: #ccc;
overflow: hidden;
background-image: url(../image/bg1.png);
}
.movable-view {
margin-top: 12px;
align-items: center;
justify-content: center;
height: 30px;
width: 30px;
background: #e6f7e6;
}
text {
font-size: 16px;
} </style>

通过 onchange 事件可获取滑块滑动时返回的位置信息,通过判断滑块的x坐标到达目标区间内,则提示验证成功。

| onchange | eventhandle |   | 否 | 拖动过程中触发的事件,event.detail = {x, y, source} |

还有很多属性,可查看官方文档学习:

属性名称 类型 默认值 必填 说明
direction string none movable-view 的移动方向,属性值有 all、vertical、horizontal、none
inertia boolean false movable-view 是否带有惯性
out-of-bounds boolean false 超过可移动区域后,movable-view 是否还可以移动
x number 定义 x 轴方向的偏移,如果 x 的值不在可移动范围内,会自动移动到可移动范围,改变 x 的值会触发动画
y number 定义 y 轴方向的偏移,如果 y 的值不在可移动范围内,会自动移动到可移动范围,改变 y 的值会触发动画
damping number 20 阻尼系数,用于控制 x 或 y 改变时的动画和过界回弹的动画,值越大移动越快
friction number 2 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于 0,否则会被设置成默认值
disabled boolean false 是否禁用
scale boolean false 是否支持双指缩放,默认缩放手势生效区域是在 movable-view 内
scale-min number 0.5 定义缩放倍数最小值
scale-max number 10 定义缩放倍数最大值
scale-value number 1 定义缩放倍数,取值范围为 0.5 - 10
animation boolean true 是否使用动画
onchange eventhandle 拖动过程中触发的事件,event.detail = {x, y, source}
onscale eventhandle 缩放过程中触发的事件,event.detail = {x, y, scale}
onhtouchmove eventhandle 初次手指触摸后移动为横向的移动时触发
onvtouchmove eventhandle 初次手指触摸后移动为纵向的移动时触发

AVM 拖动组件 movable-view 介绍的更多相关文章

  1. 微信开发新增拖动组件--movableview介绍

    小程序的更新中,也新增了一个UI组件,它就是视图组件movable-view,它需要配合movable-area来一起使用.简单来说,它就是一个支持在指定区域内可以拖动内容的容器.我们来看一个简单的示 ...

  2. React-Native之截图组件view-shot的介绍与使用

    React-Native之截图组件view-shot的介绍与使用 一,需求分析 1,需要将分享页生成图片,并分享到微信好友与朋友圈. 二,react-native-view-shot介绍 1,可以截取 ...

  3. React-Native之轮播组件looped-carousel的介绍与使用

    React-Native之轮播组件looped-carousel的介绍与使用 一,关于react-native轮播组件的介绍与对比 1,react-native-swiper在动态使用网页图片,多张图 ...

  4. 「小程序JAVA实战」小程序视频组件与api介绍(51)

    转自:https://idig8.com/2018/09/22/xiaochengxujavashizhanxiaochengxushipinzujianyuapijieshao50/ 这次说下,小程 ...

  5. C# BackgroundWorker组件学习入门介绍

    C# BackgroundWorker组件学习入门介绍 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能 ...

  6. React Native之本地文件系统访问组件react-native-fs的介绍与使用

    React Native之本地文件系统访问组件react-native-fs的介绍与使用 一,需求分析 1,需要将图片保存到本地相册: 2,需要创建文件,并对其进行读写 删除操作. 二,简单介绍 re ...

  7. 第一百九十三节,jQuery EasyUI,Draggable(拖动)组件

    Draggable(拖动)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Draggable(拖动)组件的使用方法,这个组件不依赖于其 他组 ...

  8. 日志组件Log2Net的介绍和使用(附源码开源地址)

    Log2Net是一个用于收集日志到数据库或文件的组件,支持.NET和.NetCore平台. 此组件自动收集系统的运行日志(服务器运行情况.在线人数等).异常日志.程序员还可以添加自定义日志. 该组件支 ...

  9. <react> 组件的详细介绍:

    <react> 组件的详细介绍: 思维导图: 代码介绍: TodoList:(组件) import React, { Component } from 'react' import Sty ...

随机推荐

  1. 老杜MySql——34道作业题

    老杜MySql链接:https://www.bilibili.com/video/BV1Vy4y1z7EX?p=132 本次随笔主要来源于老杜MySql讲解视频后面的作业题,加上个人的一些理解,以及整 ...

  2. PHP全栈开发(八):CSS Ⅲ background

    设置背景颜色: div { background-color:#b0c4de; } 不仅可以给body标签设置背景颜色,还能给p,div,h标签设置背景颜色 设置背景图片: body { backgr ...

  3. GCN的原理及其代码实现

    图数据的特征性质 图像数据是一种特殊的图数据,图像数据是标准的2D网格结构图数据.图像数据的CNN卷积神经网络算法不能直接用在图数据上,原因是图数据具有以下特殊性. 节点分布不均匀:图像数据及网格数据 ...

  4. Linux基础_2_bash功能

    查看当前shell:echo  $SHELL 查看可用shell:cat  /etc/shells 命令行编辑 光标跳到行首:Ctrl+a 光标跳到行尾:Ctrl+e 以单词为单位快速跳转光标:Ctr ...

  5. 4.Future对象

    asyncio.Future对象 Future是Task类的基类 Task对象内部await结果的处理是基于Future对象来的 async def main(): # 获取当前事件循环 loop = ...

  6. vuex和浏览器【sessionStorage,localStorage ..】 得区别

    1.Vuex的主要作用是用来共享和管理数据,那为什么不直接使用浏览器缓存呢?2.Vuex和浏览器缓存策略的根本区别是什么?3.Vuex,state仓库中的数据流是单向同步的,那为什么可以在action ...

  7. 九、docker swarm主机编排

    一. 什么是Docker Swarm Swarm 是 Docker 公司推出的用来管理 docker 集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/do ...

  8. 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置

    目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...

  9. ML-梯度下降法的详细推导与代码实现

    计算 对于线性回归,梯度下降法的目标就是找到一个足够好的向量\(\theta\),使代价函数\(J(\theta) = \sum_{i=1}^{m}(\hat{y}-y_{i})^{2}\)取得最小值 ...

  10. ES6 学习笔记(二)解构赋值

    一.数组的解构赋值 1.基本用法 ES6允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,该操作即为解构 如: let [a,b,c]=[1,2,3]; console.log(a,b,c) ...