微信小程序 按钮滑动的实现方法

一.先看东西
滑动前
滑动后
二.再上代码
index.wxml
<view class="content">
<view class="sliderContent">
<input placeholder="验证码" placeholder-class="input-placeholder" disabled="{{disabled}}" />
<view class="slider" bindtouchstart="moveSendBtnStart" bindtouchend="moveSendBtnEnd" bindtouchmove="moveSendBtn" style="left:{{moveSendBtnLeft}}rpx;background-color:{{SendBtnColor}}">发送</view>
</view>
</view>
index.wxss
.content {
margin-top: 100rpx;
font-size: 24rpx;
}
.sliderContent{
position: relative;
margin: 0 auto;
margin-bottom: 50rpx;
padding-left: 60rpx;
width: 425rpx;
box-sizing: border-box;
height: 70rpx;
line-height: 70rpx;
border-radius: 60rpx;
background-color: #fff;
color: #289adc;
box-shadow: 0px 4px 6px 0px rgba(37, 114, 219, 0.3);
}
.sliderContent input {
line-height: 70rpx;
height: 70rpx;
box-sizing: border-box;
padding-left: 40rpx;
width: 250rpx;
}
.input-placeholder {
text-align: center;
color: #289adc;
}
.slider {
position: absolute;
top: 0;
left: 0;
width: 150rpx;
border-radius: 60rpx;
text-align: center;
background-color: #7f7f7f;
color: #fff;
box-shadow: 0px 4px 6px 0px rgba(37, 114, 219, 0.3);
}
index.js
Page({
data: {
moveStartX: 0, //起始位置
moveSendBtnLeft: 0, //发送按钮的left属性
moveEndX: 0, //结束位置
screenWidth: 0, //屏幕宽度
moveable: true, //是否可滑动
disabled: true,//验证码输入框是否可用,
SendBtnColor: "#7f7f7f" //滑动按钮颜色
},
onLoad: function () {
var that = this;
// 获取屏幕宽度
wx.getSystemInfo({
success: function (res) {
that.setData({
screenWidth: res.screenWidth
})
},
})
},
// 开始移动
moveSendBtnStart: function (e) {
if (!this.data.moveable) {
return;
}
console.log("start");
console.log(e);
this.setData({
moveStartX: e.changedTouches["0"].clientX
})
},
//移动发送按钮
moveSendBtn: function (e) {
if (!this.data.moveable) {
return;
}
var that = this;
// console.log(e.touches[0]);
var left = ((e.touches[0].clientX - that.data.moveStartX) / (that.data.screenWidth / 750))
console.log(left)
if (left <= 275.5) {
this.setData({
moveSendBtnLeft: left
})
} else {
this.setData({
moveSendBtnLeft: 275.5
})
}
},
// 结束移动
moveSendBtnEnd: function (e) {
console.log("end");
var that = this;
var left = ((e.changedTouches[0].clientX - that.data.moveStartX) / (that.data.screenWidth / 750))
console.log(left);
if (left < 275.5) {
for (let i = left; i >= 0; i--) {
that.setData({
moveSendBtnLeft: i
})
}
} else {
that.setData({
moveEndX: e.changedTouches[0].clientX,
moveable: false,
disabled: false,
SendBtnColor: "#289adc"
})
}
}
})
三.顺便说说
1.按钮滑动事件
bindtouchstart //按钮开始滑动
bindtouchend //按钮结束滑动
bindtouchmove //按钮正在滑动
在按钮开始滑动是记录开始的位置
滑动结束时要判断按钮是否已经滑动到最右侧,如果只滑动到中间,则弹回
滑动过程中要计算与初始位置的距离,然后计算并改变button的left属性值
2.按钮滑动的距离计算
因为滑动事件返回的数值都是以px作为单位,而我们在界面设计时使用的是rpx,在这里我们要进行数值计算,在onLoad中,我们获取到当前设备的宽度,rpx作为单位时,认为当前设备的逻辑宽度为750rpx,假设屏幕实际宽度为400px,那么1px = 400/750 rpx,那么滑动的距离 = 实际互动距离 / (400/750) rpx
经过换算后,我们就可以得到以rpx作为单位的滑动距离
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 微信小程序
# 按钮滑动
# 小程序
# 按钮滑动的实现方法
# 微信小程序 利用css实现遮罩效果实例详解
# 微信小程序实现登录遮罩效果
# 微信小程序动态增加按钮组件
# 微信小程序登录按钮遮罩浮层效果的实现方法
# 验证码
# 的是
# 在这里
# 如有
# 互动
# 希望能
# 谢谢大家
# 时要
# 先看
# 中要
# 再上
# 就可以
# 输入框
# 疑问请
# wxss
# js
# top
# margin
# rpx
# moveSendBtnLeft
相关文章:
建站之星云端配置指南:模板选择与SEO优化一键生成
如何在腾讯云免费申请建站?
宝塔面板创建网站无法访问?如何快速排查修复?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何在IIS中新建站点并配置端口与物理路径?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
小型网站建站如何选择虚拟主机?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何快速查询域名建站关键信息?
如何快速选择适合个人网站的云服务器配置?
焦点电影公司作品,电影焦点结局是什么?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何获取上海专业网站定制建站电话?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站主机SSH密钥生成步骤及常见问题解答?
详解jQuery停止动画——stop()方法的使用
建站之星伪静态规则如何设置?
宝塔面板如何快速创建新站点?
如何快速生成ASP一键建站模板并优化安全性?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
深圳网站制作案例,网页的相关名词有哪些?
如何用花生壳三步快速搭建专属网站?
如何高效利用亚马逊云主机搭建企业网站?
如何通过虚拟机搭建网站?详细步骤解析
香港服务器部署网站为何提示未备案?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
常州自助建站费用包含哪些项目?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何快速建站并高效导出源代码?
建站上市公司网站建设方案与SEO优化服务定制指南
建站DNS解析失败?如何正确配置域名服务器?
TestNG的testng.xml配置文件怎么写
宝塔Windows建站如何避免显示默认IIS页面?
文字头像制作网站推荐软件,醒图能自动配文字吗?
建站之星代理商如何保障技术支持与售后服务?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
建站之星如何实现五合一智能建站与营销推广?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
企业微网站怎么做,公司网站和公众号有什么区别?
如何在Windows 2008云服务器安全搭建网站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
香港服务器租用每月最低只需15元?
实例解析Array和String方法
如何通过VPS建站无需域名直接访问?
股票网站制作软件,网上股票怎么开户?
建站主机是否属于云主机类型?
*请认真填写需求信息,我们会在24小时内与您取得联系。