全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

一.先看东西


滑动前

滑动后

二.再上代码

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小时内与您取得联系。