无需插件,简简单单几行代码实现滑块验证码
话不多说,老规矩,先上Demo,预览地址:blogai.cn
再放几张预览图:
该功能的实现大概有以下几步:
- canvas 创建两个一样的画布,储存验证图
- 相同坐标通过fill,clip截取两个验证块
- 监听鼠标按下事件,记录初始X坐标
- 监听鼠标移动事件,记录下移动坐标,验证块随着移动
- 监听鼠标松开事件,记录结束X坐标
- 对比移动距离和裁剪时的x坐标
- 判断差值是否可忽略
const canvas = document.getElementById('canvas'),
block = document.getElementById('block');
let ctx_c = canvas.getContext('2d'),
ctx_b = block.getContext('2d'),
img = document.createElement('img');
img.src = 'car.jpg';
img.onload = function () {
ctx_c.drawImage(img, 0, 0, canvas.width, canvas.height);
ctx_b.drawImage(img,