微信小程序滑块验证方法,前端开发原则
本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车免费领取!开发知识点,真正体系化!**[外链图片转存中…(
box-sizing: border-box;
}
.canfile_image::before {
content: “”;
position: absolute;
width: 100%;
height: 100%;
box-shadow: 0 0 8px 5px rgba(255, 255, 255, 0.8) inset;
}
.canvas_slide {
width: 90%;
height: 45px;
background: #eee;
text-align: center;
line-height: 80rpx;
margin: 0 auto;
position: relative;
font-size: 26rpx;
}
/* 滑条上滑块经过的部分 */
.canvas_width {
position: absolute;
left: 0;
top: 0;
height: 45px;
background-color: #1991FA;
width: 0;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
/* 滑块 */
.canvas_kus {
width: 48px;
height: 45px;
background-color: #fff;
font-size: 36rpx;
font-weight: 700;
position: absolute;
left: 0;
top: 0;
border: 1px solid #ddd;
color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
.canvas_kus>view {
width: 100%;
height: 100%;
background-position: center;
background-size: 50% 40%;
background-repeat: no-repeat;
}
/* 底部按钮位置 */
.canvas_guil {
width: 100%;
border-top: 1px solid #f4f4f4;
height: 100rpx;
display: flex;
align-items: center;
float: left;
font-size: 30rpx;
color: #666;
}
.canvas_guil>image {
margin-left: 30rpx;
}
index.js
Component({
/**
- 组件的属性列表
*/
properties: {
sildeBlockCont: { //接受父组件值
type: String
}
},
/**
- 组件的初始数据
*/
data: {
canvas_width: 0,
slidebel: false, //滑动弹窗
canfile_image: ‘’, //裁剪图片
canfile_x: ‘’, //被抠方块的水平位置
canfile_y: ‘’, //被抠方块的垂直位置
slide_clientX: 0, //移动位置
slide_status: 0, //0 停止操作 1 触发长按 2 正确 3 错误
},
/**
- 组件的方法列表
*/
methods: {
// 弹窗
visidlisd(e) {
var that = this
this.setData({
slidebel: !this.data.slidebel
})
if (this.data.slidebel) {
if (this.data.canvas_width != 0) {
this.slide_tap()
return
}
wx.nextTick(() => {
let query = this.createSelectorQuery()
query.select(‘#canvas_img’).boundingClientRect(function (rect) {
that.setData({
canvas_width: rect.width
})
that.slide_tap()
}).exec()
})
}
},
// 画布
slide_tap(e) {
var that = this
var imgIndex = Math.round(Math.random() * 13 + 1)
that.setData({
canfile_x: Math.round(Math.random() * (this.data.canvas_width - 120) + 60),
canfile_y: Math.round(Math.random() * (this.data.canvas_width * 13 / 28 - 60)),
canfile_image: ‘’
})
setTimeout(function () {
var context = wx.createCanvasContext(‘firstCanvas’, that)
context.width = that.data.canvas_width
context.height = that.data.canvas_width * 13 / 28
// /imgs/puzzle-bg-${imgIndex}.jpg 为滑块背景图 从静态资源获取 如从接口获取可从that.properties.properties拿
context.drawImage(/imgs/puzzle-bg-${imgIndex}.jpg
, 0, 0, context.width, context.height)
context.draw(false, (() => {
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
})
}
}, that);
}))
}, 50)
},
// 滑动开始
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;
var maxX = this.data.canvas_width - 60
if (that.data.slide_clientX < 1) {
that.data.slide_status = 0
return false
}
if (that.data.slide_clientX > maxX) {
cliextX = maxX
} 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,
})
}, 500)
wx.showToast({
icon: ‘success’,
title: ‘验证成功’,
})
that.triggerEvent(‘puzzleVerify’)
} else {
that.setData({
slide_status: 3,
})
}
setTimeout(function () {
that.setData({
slide_status: 0,
slide_clientX: 0,
})
}, 500)
},
},
lifetimes: {
created() {
// 在组件实例刚刚被创建时执行
},
ready() {
// 在组件在视图层布局完成后执行
// console.log(this.properties.sildeBlockCont);
},
}
})
index.json
{
“component”: true,
“usingComponents”: {}
}
父组件调用滑块
json
“usingComponents”: {
“puzzleVerify”: “/components/puzzleVerify/index”
}
wxml
js
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后
本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等
详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车免费领取!
前端视频资料:
开发知识点,真正体系化!**
[外链图片转存中…(img-qNLrmXuA-1712341629938)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后
本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等
详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车免费领取!
[外链图片转存中…(img-kbtclFIc-1712341629938)]
前端视频资料:
更多推荐
所有评论(0)