最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序 按鈕滑動的實(shí)現(xiàn)方法

 更新時間:2017年09月27日 10:56:42   作者:我是漸漸呀  
這篇文章主要介紹了微信小程序 按鈕滑動的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下

微信小程序 按鈕滑動的實(shí)現(xiàn)方法

一.先看東西


滑動前

滑動后

二.再上代碼

index.wxml

<view class="content">
  <view class="sliderContent">
    <input placeholder="驗(yàn)證碼" placeholder-class="input-placeholder" disabled="{{disabled}}" />
    <view class="slider" bindtouchstart="moveSendBtnStart" bindtouchend="moveSendBtnEnd" bindtouchmove="moveSendBtn" style="left:{{moveSendBtnLeft}}rpx;background-color:{{SendBtnColor}}">發(fā)送</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, //發(fā)送按鈕的left屬性
    moveEndX: 0, //結(jié)束位置
    screenWidth: 0, //屏幕寬度
    moveable: true, //是否可滑動
    disabled: true,//驗(yàn)證碼輸入框是否可用,
    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
    })
  },
  //移動發(fā)送按鈕
  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
      })
    }
  },
  // 結(jié)束移動
  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 //按鈕結(jié)束滑動
bindtouchmove //按鈕正在滑動

在按鈕開始滑動是記錄開始的位置

滑動結(jié)束時要判斷按鈕是否已經(jīng)滑動到最右側(cè),如果只滑動到中間,則彈回

滑動過程中要計(jì)算與初始位置的距離,然后計(jì)算并改變button的left屬性值

2.按鈕滑動的距離計(jì)算

因?yàn)榛瑒邮录祷氐臄?shù)值都是以px作為單位,而我們在界面設(shè)計(jì)時使用的是rpx,在這里我們要進(jìn)行數(shù)值計(jì)算,在onLoad中,我們獲取到當(dāng)前設(shè)備的寬度,rpx作為單位時,認(rèn)為當(dāng)前設(shè)備的邏輯寬度為750rpx,假設(shè)屏幕實(shí)際寬度為400px,那么1px = 400/750 rpx,那么滑動的距離 = 實(shí)際互動距離 / (400/750) rpx

經(jīng)過換算后,我們就可以得到以rpx作為單位的滑動距離

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 微信小程序 購物車簡單實(shí)例

    微信小程序 購物車簡單實(shí)例

    這篇文章主要介紹了微信小程序 購物車簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 微信小程序中使元素占滿整個屏幕高度實(shí)現(xiàn)方法

    微信小程序中使元素占滿整個屏幕高度實(shí)現(xiàn)方法

    這篇文章主要介紹了微信小程序中使元素占滿整個屏幕高度實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • JavaScript?history?對象詳解

    JavaScript?history?對象詳解

    這篇文章主要介紹了JavaScript?history?對象詳解,history?對象表示當(dāng)前窗口首次使用以來用戶的導(dǎo)航歷史記錄。因?yàn)?history?是?window?的屬性,所以每個?window?都有自己的?history?對象,更多詳細(xì)內(nèi)容請參考下面文章內(nèi)容
    2021-11-11
  • 制作特殊字的腳本

    制作特殊字的腳本

    制作特殊字的腳本...
    2006-06-06
  • Flutter?WebView性能優(yōu)化使h5像原生頁面一樣優(yōu)秀

    Flutter?WebView性能優(yōu)化使h5像原生頁面一樣優(yōu)秀

    這篇文章主要為大家介紹了Flutter?WebView性能優(yōu)化使h5像原生頁面一樣優(yōu)秀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • JSON stringify及parse方法實(shí)現(xiàn)數(shù)據(jù)深拷貝

    JSON stringify及parse方法實(shí)現(xiàn)數(shù)據(jù)深拷貝

    這篇文章主要為大家介紹了JSON.stringify遞歸及JSON.parse有限狀態(tài)自動機(jī)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • js 數(shù)組 fill() 填充方法

    js 數(shù)組 fill() 填充方法

    這篇文章主要介紹了js 數(shù)組 fill() 的填充方法,初始化數(shù)組的方法,但是初始化數(shù)組之后,數(shù)組中的每一項(xiàng)元素默認(rèn)為 empty 空位占位,如何對數(shù)組這些空位添加默認(rèn)的元素,ES6提供了 fill() 方法實(shí)現(xiàn)這一操作。本文總結(jié)數(shù)組 fill() 方法的詳細(xì)使用,需要的朋友可以參考一下
    2021-10-10
  • JS中this的4種綁定規(guī)則詳解

    JS中this的4種綁定規(guī)則詳解

    如果你學(xué)過面向?qū)ο缶幊蹋悄憧隙ㄖ栏墒裁从玫?,如果你沒有學(xué)過,那么暫時可以不用看這篇文章,this既不指向函數(shù)自身,也不指函數(shù)的詞法作用域,具體怎么使用JS中的this,JS中的this綁定規(guī)則又是什么?
    2020-02-02
  • 微信小程序 Image API實(shí)例詳解

    微信小程序 Image API實(shí)例詳解

    這篇文章主要介紹了微信小程序 Image API實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Lambda表達(dá)式原理及示例

    Lambda表達(dá)式原理及示例

    這篇文章主要介紹了Java8中的新特性Lambda表達(dá)式,文中的示例可以幫助大家快速了解該特性,感興趣的小伙伴可以一起學(xué)習(xí)
    2021-08-08

最新評論

渝北区| 定远县| 长阳| 沙坪坝区| 缙云县| 广元市| 宁国市| 丰县| 阳东县| 南召县| 井研县| 华安县| 东光县| 阜平县| 西充县| 海门市| 吉隆县| 广州市| 宝应县| 山阴县| 炉霍县| 炎陵县| 莱西市| 龙游县| 建始县| 庄河市| 诸暨市| 利川市| 长宁县| 策勒县| 广东省| SHOW| 兴文县| 孙吴县| 马尔康县| 炎陵县| 克拉玛依市| 安阳县| 清河县| 遂川县| 措美县|