微信小程序实现滑动验证拼图

本文实例为大家分享了微信小程序实现滑动验证拼图的具体代码,供大家参考,具体内容如下

效果图

.wxml

<button bindtap="visidlisd">滑动验证</button>
<!-- 滑动验证弹窗 -->
<view class="slide_model" wx:if="{{slidebel}}">
  <view>
      <view class="canvas_img">
            <canvas wx:if="{{!canfile_image}}" style="width: 300px; height: 104px;" canvas-id="firstCanvas"></canvas>
            <image wx:if="{{canfile_image}}" class="canvas_srinl" src="/images/slideimage_{{canfile_index}}.jpg"></image>
            <view class="canvas_view" style="left:{{canfile_x}}px;top:{{canfile_y}}px;"></view>
            <image class="canfile_image" style="top:{{canfile_y}}px;left:{{slide_clientX > 250 ? 250 : slide_clientX}}px;" src="{{canfile_image}}"></image>
        </view>
        <view class="canvas_slide">
            <view class="canvas_width" style="width:{{slide_clientX > 260?260:slide_clientX}}px;{{slide_status == 2?'background:#52CCBA;':''}}{{slide_status == 3?'background:#F57A7A;':''}}"></view>
            <view class="canvas_kus" bindtouchstart="slide_start" bindtouchmove="slide_hmove" bindtouchend="slide_chend"
      style="left:{{slide_clientX > 260?260:slide_clientX}}px;{{slide_status == 0?'color: #333;':''}}{{slide_status == 1?'background:#1991FA;':''}}{{slide_status == 2?'background:#52CCBA;':''}}{{slide_status == 3?'background:#F57A7A;':''}}">
            <view wx:if="{{slide_status < 2}}" class="cuIcon-back_android"></view>
            <view wx:if="{{slide_status == 2}}" class="cuIcon-check"></view>
            <view wx:if="{{slide_status == 3}}" class="cuIcon-close"></view>
          </view>
          <view wx:if="{{slide_status == 0}}">拖动左边滑块完成上方拼图</view>
        </view>
        <view class="canvas_guil">
            <view bindtap="visidlisd" class="cuIcon-roundclose"></view>
            <view bindtap="slide_tap" class="cuIcon-refresh"></view>
        </view>
    </view>
</view>

.wxss

/* 滑动验证 */
.slide_model{width: 100%;height: 100vh;z-index: 10;position: fixed;left: 0;top: 0;background:rgba(0, 0, 0, 0.4);display: flex;align-items: center;justify-content: center;}
.slide_model>view{float: left;z-index: 1;position: relative;width: calc(300px + 60rpx);background-color: #fff;}
.canvas_img{width: 300px;height: 104px;position: relative;float: left;margin: 30rpx 30rpx 0;}
.canvas_view{width: 50px;height: 50px;position: absolute;background:#fff;z-index: 2;}
.canfile_image{width: 50px;height: 50px;position: absolute;left: 0;z-index: 3;box-shadow: 0px 1px 27px rgba(0, 0, 0, 0.2);}
.canvas_kus{width: 40px;height: 40px;background-color: #fff;font-size: 36rpx;font-weight: 700;position: absolute;left: 0;top: 0;border: 1px solid #ddd;color: #fff;}
.canvas_srinl{width: 300px;height: 104px;}
.canvas_width{position: absolute;left: 0;top: 0;height:40px;background-color: #1991FA;width: 0;border-top: 1px solid #ddd;border-bottom: 1px solid #ddd;}
.cuIcon-back_android{transform:rotate(180deg);}
.canvas_slide{width: 300px;height: 40px;background:#eee;text-align: center;padding-left: 50rpx;line-height: 80rpx;float: left;margin: 30rpx;position: relative;font-size: 26rpx;}
.canvas_guil{width: 100%;border-top: 1px solid #f4f4f4;height: 100rpx;display: flex;align-items: center;float: left;font-size: 46rpx;color: #666;}
.canvas_guil>view{margin-left: 30rpx;}

.js

Page({
  data: {
    slidebel:false,//滑动弹窗
    canfile_image:'',//裁剪图片
    canfile_index:'',//图片返回 1 至 3 之间的数
    canfile_x:'',//x返回 60 至 240 之间的数
    canfile_y:'',//y返回 0 至 50 之间的数
    slide_clientX:0,//移动位置
    slide_status:0,//0 停止操作   1 触发长按   2 正确   3 错误
  },
  // 弹窗
  visidlisd(e){
    this.setData({
      slidebel:!this.data.slidebel
    })
    if(this.data.slidebel){
      this.slide_tap()
    }
  },
  // 画布
  slide_tap(e){
    var that = this
    that.setData({
      canfile_index:Math.round(Math.random() * 2 + 1),
      canfile_x:Math.round(Math.random() * 180 + 60),
      canfile_y:Math.round(Math.random() * 54),
      canfile_image:''
    })
    clearTimeout(that.data.timeoutID)
    that.data.timeoutID = setTimeout(function () {
      var context = wx.createCanvasContext('firstCanvas')
      context.width = 300
      context.height = 104
      context.drawImage('/images/slideimage_'+that.data.canfile_index+'.jpg',0,0,context.width,context.height)
      context.draw(true,(()=>{
        wx.canvasToTempFilePath({
          x: that.data.canfile_x,
          y: that.data.canfile_y,
          width:50,
          height:50,
          canvasId: 'firstCanvas',
          success: function (res) {
            that.setData({
              canfile_image:res.tempFilePath
            })
          }
        });
      }))
    },300)
  },
  // 滑动开始
  slide_start(e){
    this.setData({
      slide_status:1
    })
  },
  // 滑动中
  slide_hmove(e){
    this.setData({
      slide_clientX:(e.touches[0].clientX - 60) < 1 ? 0 : (e.touches[0].clientX - 60)
    })
  },
  //滑动结束
  slide_chend(e){
    var that = this
    var cliextX;
    if(that.data.slide_clientX < 1){
      that.data.slide_status = 0
      return false
    }
    if(that.data.slide_clientX > 240){
      cliextX = 240
    }else{
      cliextX = that.data.slide_clientX
    }
    if(((that.data.canfile_x + 5) > cliextX) && ((that.data.canfile_x - 5) < cliextX)){
      that.setData({
        slide_status:2,
        slide_clientX:that.data.canfile_x,
      })
      setTimeout(function () {
        that.setData({
          slidebel:false,
        })
      },1500)
    }else{
      that.setData({
        slide_status:3,
      })
    }
    setTimeout(function () {
      that.setData({
        slide_status:0,
        slide_clientX:0,
      })
    },1500)
  },
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序滑块验证实现方法

    下面给大家介绍下微信小程序滑块验证的效果图及实例代码: 如图: 滑块验证组件 puzzleVerify目录 index.wxml <!-- 滑动验证弹窗 --> <view class="slide_model" wx:if="{{slidebel}}"> <view class="slide_wrapper"> <!-- 拼图图片部分 --> <view class="canvas

  • 微信小程序实现登陆注册滑块验证

    目录 一.创建自定义组件MoveVerify 二.在index页面使用 本文实例为大家分享了微信小程序实现登陆注册滑块验证的具体代码,供大家参考,具体内容如下 一.创建自定义组件MoveVerify MoveVerify.js Component({   /**    * 组件的属性列表    */   properties: {     },     /**    * 组件的初始数据    */   data: {     x: 0,     oldx: 0,     isOk: false,

  • 微信小程序实现滑块验证

    本文实例为大家分享了微信小程序实现滑块验证的具体代码,供大家参考,具体内容如下 思路: 1.手指按住 并且 还能 滑动2.滑动到一定的距离 进行判断百度微信开发者文档 : 使用 movable-view的可移动区域. 结合 movable-view wxml代码 <movable-area class="content" style="width:{{area_width}}%">拖动滑块验证         <movable-view class

  • 微信小程序实现滑动验证拼图

    本文实例为大家分享了微信小程序实现滑动验证拼图的具体代码,供大家参考,具体内容如下 效果图 .wxml <button bindtap="visidlisd">滑动验证</button> <!-- 滑动验证弹窗 --> <view class="slide_model" wx:if="{{slidebel}}">   <view>       <view class="c

  • 微信小程序左右滑动切换页面详解及实例代码

    微信小程序--左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X,Y坐标. touchstart在触摸开始时触发事件; touchend在触摸结束时触发事件; touchmove触摸的过程中不断激发这个事件; 这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmov

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

    微信小程序 按钮滑动的实现方法 一.先看东西 滑动前 滑动后 二.再上代码 index.wxml <view class="content"> <view class="sliderContent"> <input placeholder="验证码" placeholder-class="input-placeholder" disabled="{{disabled}}" /&

  • 微信小程序 页面滑动事件的实例详解

    微信小程序--页面滑动事件 wxml: <view id="id" class = "ball" bindtap = "handletap" bindtouchstart = "handletouchtart" bindtouchmove="handletouchmove" bindtouchend="handletouchend" style = "width : 10

  • 微信小程序左右滑动的实现代码

    左滑 右滑 你不再是一个人 无论你是一个程序猿还是一个程序媛,每天干的事除了coding还是coding,代码不能解决的问题(什么问题自己心里还没点abcd数嘛),探探能帮你解决.最近网上特流行一款交友软件叫探探(据说是yp软件).作为探探曾经的一名从来只浏览图片但是没有yue过的资深玩家同时又是一位热爱前端的妹子,我决定要仿一下这个app.既然是寄几开发,那还不是寄几说了算,毫无疑问整款APP的主题风格被我改成我最爱的终极少女粉了hhh,下面让我们一起来感受下探探的魅力吧~ 项目整体效果 项目

  • 微信小程序实现滑动切换自定义页码的方法分析

    本文实例讲述了微信小程序实现滑动切换自定义页码的方法.分享给大家供大家参考,具体如下: 效果如下: 这里三个图片使用了swiper组件进行轮播,下方的页码数字1.2.3会随着图片的切换变动位置 在微信小程序中我们是无法操作dom的,那么 var div = document.getElementById('id'); div.setAttribute("class", "className"); 这种方式实现. 然后我们可以考虑使用hidden或者wx:if的方式,

  • Django实现微信小程序的登录验证功能并维护登录态

    这次自己做了一个小程序来玩,在登录方面一直有些模糊,网上看了很多文档后,得出以下一种解决方案. 环境说明: 1.小程序只需要拿到openid,其他信息不存储. 2.Django自带的User类不适合. 具体操作流程: 1.用户点进小程序,就调用wx.login()获取临时登录凭证code, wx.login()用户是无感知的, 2.通过wx.request()将code传到开发者服务器的后台程序, 3.后台拿到code之后,调用微信提供的接口,获取openid和session_key, 4.后台

  • 微信小程序可滑动周日历组件使用详解

    微信小程序可滑动周日历组件,供大家参考,具体内容如下 看网上周日历组件比较少,自己弄了一个,和大家分享一下. 如果样式变形,请检查是否有共用样式起冲突 展示一下效果图 在components组件文件夹下新建calendarWeek文件夹 直接上代码吧: index.wxml <!--components/calendarWeek/index.wxml--> <!-- 日历 --> <view class="date-choose shrink border-bott

  • 微信小程序可滑动月日历组件使用详解

    微信小程序可滑动月日历组件 此日历可进行左右滑动,展示签到打卡信息,和大家分享一下. 如果样式变形,请检查是否有共用样式起冲突 展示一下效果图 在components组件文件夹下新建calendarMonth文件夹 直接上代码吧: index.wxml <!--components/calendar/index.wxml--> <view class='month'> <!-- <view class='arrow' bindtap='prevMonth'><

随机推荐