首页 > 热点 > 微信 > 正文

微信小程序-可移动菜单的实现过程详解

2024-07-22 01:18:08
字体:
来源:转载
供稿:网友

前言

我们可以经常看到手机app里有的菜单栏是悬浮在首页的,用户可以拖动和点击菜单栏进行交互,今天代码君就教大家利用小程序的控件,实现一个可移动的菜单,效果图是这样的,要实现这样的效果,需要引出我们今天的重要人物movable-view

movable-view属性介绍

属性名 作用 参数值
direction 设置movable-view的移动方向 属性值有all、vertical、horizontal、none
inertia movable-view是否带有惯性 true/false 默认是false
out-of-bounds 超过可移动区域后,movable-view是否还可以移动 true/false 默认是false
x 定义x轴方向的偏移,如果x的值不在可移动范围内,会自动移动到可移动范围;改变x的值会触发动画 number
y 定义y轴方向的偏移,如果y的值不在可移动范围内,会自动移动到可移动范围;改变y的值会触发动画 number
damping 阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快 number 默认是20
friction 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值 number默认是2

实现可移动菜单

一、wxml界面的实现

<view class='title-line'>movable</view><movable-area class="moveArea"><movable-view class='moveView' x="{{x}}" y="{{y}}" damping="40" direction="all" inertia='true'>菜单</movable-view></movable-area><button class='button' type='primary' size='mini' bindtap='moveView'>点我随机滚动小方块</button><button class='button' type='primary' size='mini' bindtap='stopMove'>点我停止随机滚动</button>

界面布局比较简单,需要注意的几点

    movable-view 必须设置width和height属性,不设置默认为10px movable-view 默认为绝对定位,top和left属性为0px 当movable-view小于movable-area时,movable-view的移动范围是在movable-area内;当movable-view大于movable-area时,movable-view的移动范围必须包含movable-area(x轴方向和y轴方向分开考虑) movable-view必须在<movable-area/>组件中,并且必须是直接子节点,否则不能移动

二、xxx.js随机移动实现的逻辑

Page({data: {x: 0,y: 0,isStop:false,},moveView:function(e){var that = this;setTimeout(function () {that.move(that);}, 1000);},stopMove: function (e) {this.setData({isStop: true})},move: function (that){var randowX = that.GetRandomNum(1, 200);var randowY = that.GetRandomNum(1, 400);that.setData({x: randowX,y:randowY,})if(!that.data.isStop){setTimeout(function () {that.move(that);}, 100);}},//随机函数GetRandomNum: function (Min, Max) {var Range = Max - Min;var Rand = Math.random();return (Min + Math.round(Rand * Range));},            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表