微信小程序?qū)崿F(xiàn)滑動(dòng)驗(yàn)證拼圖
本文實(shí)例為大家分享了微信小程序?qū)崿F(xiàn)滑動(dòng)驗(yàn)證拼圖的具體代碼,供大家參考,具體內(nèi)容如下
效果圖
.wxml
<button bindtap="visidlisd">滑動(dòng)驗(yàn)證</button> <!-- 滑動(dòng)驗(yàn)證彈窗 --> <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}}">拖動(dòng)左邊滑塊完成上方拼圖</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
/* 滑動(dòng)驗(yàn)證 */ .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,//滑動(dòng)彈窗 ? ? canfile_image:'',//裁剪圖片 ? ? canfile_index:'',//圖片返回 1 至 3 之間的數(shù) ? ? canfile_x:'',//x返回 60 至 240 之間的數(shù) ? ? canfile_y:'',//y返回 0 至 50 之間的數(shù) ? ? slide_clientX:0,//移動(dòng)位置 ? ? slide_status:0,//0 停止操作 ? 1 觸發(fā)長(zhǎng)按 ? 2 正確 ? 3 錯(cuò)誤 ? }, ? // 彈窗 ? 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) ? }, ? // 滑動(dòng)開(kāi)始 ? slide_start(e){ ? ? this.setData({ ? ? ? slide_status:1 ? ? }) ? }, ? // 滑動(dòng)中 ? slide_hmove(e){ ? ? this.setData({ ? ? ? slide_clientX:(e.touches[0].clientX - 60) < 1 ? 0 : (e.touches[0].clientX - 60) ? ? }) ? }, ? //滑動(dòng)結(jié)束 ? 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) ? }, })
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序?qū)崿F(xiàn)帶滑塊的進(jìn)度條
- 微信小程序?qū)崿F(xiàn)滑塊驗(yàn)證
- 微信小程序?qū)崿F(xiàn)登陸注冊(cè)滑塊驗(yàn)證
- 微信小程序滑塊驗(yàn)證實(shí)現(xiàn)方法
- 微信小程序swiper-dot中的點(diǎn)如何改成滑塊詳解
- 微信小程序12行js代碼自己寫個(gè)滑塊功能(推薦)
- 微信小程序之導(dǎo)航滑塊視圖容器功能的實(shí)現(xiàn)代碼(簡(jiǎn)單兩步)
- 微信小程序?qū)崿F(xiàn)帶刻度尺滑塊功能
- 微信小程序 開(kāi)發(fā)之滑塊視圖容器(swiper)詳解及實(shí)例代碼
- 微信小程序?qū)崿F(xiàn)拼圖游戲
- 微信小程序?qū)崿F(xiàn)拼圖小游戲
- 微信小程序?qū)崿F(xiàn)的數(shù)字滑塊拼圖效果
相關(guān)文章
javascript將扁平的數(shù)據(jù)轉(zhuǎn)為樹形結(jié)構(gòu)的高效率算法
這篇文章主要介紹了javascript將扁平的數(shù)據(jù)轉(zhuǎn)為樹形結(jié)構(gòu)的高效率算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02JS中的函數(shù)與對(duì)象的創(chuàng)建方式
這篇文章主要介紹了JS中的函數(shù)與對(duì)象的創(chuàng)建方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05如何解決前端筆記本屏幕顯示縮放比例125%,150%對(duì)頁(yè)面布局的影響
如果要完整解決該縮放和布局問(wèn)題,仍需適配,下面這篇文章主要給大家介紹了關(guān)于如何解決前端筆記本屏幕顯示縮放比例125%,150%對(duì)頁(yè)面布局的影響,需要的朋友可以參考下2022-11-11JS實(shí)現(xiàn)物體帶緩沖的間歇運(yùn)動(dòng)效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)物體帶緩沖的間歇運(yùn)動(dòng)效果,可實(shí)現(xiàn)物體定時(shí)間歇運(yùn)動(dòng)的功能,涉及javascript定時(shí)器、數(shù)學(xué)運(yùn)算及頁(yè)面元素動(dòng)態(tài)修改的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12原生JS分頁(yè)展示效果(點(diǎn)擊分頁(yè)看效果)
特別酷的分頁(yè)展示效果,原生JS實(shí)現(xiàn),點(diǎn)擊分頁(yè)看效果2012-11-11JavaScript數(shù)組對(duì)象賦值用法實(shí)例
這篇文章主要介紹了JavaScript數(shù)組對(duì)象賦值用法,涉及javascript用戶交互及針對(duì)數(shù)組的排序技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JavaScript中使用webuploader實(shí)現(xiàn)上傳視頻功能(demo)
這篇文章主要介紹了webuploader實(shí)現(xiàn)上傳視頻功能,通過(guò)本文給大家介紹了上傳視頻和上傳圖片的區(qū)別講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-04-04