千家信息网

怎么用JavaScript实现滑块验证码

发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,本篇内容主要讲解"怎么用JavaScript实现滑块验证码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用JavaScript实现滑块验证码"吧!效果
千家信息网最后更新 2025年02月24日怎么用JavaScript实现滑块验证码

本篇内容主要讲解"怎么用JavaScript实现滑块验证码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用JavaScript实现滑块验证码"吧!

效果:鼠标在底部滑块上按下按住不松拖动可以移动滑块,上面大图里面带有小图背景的滑块也会跟随移动,移动到大图背景缺少区域即可完成验证。以上效果要实现,需要鼠标按下(mousedown事件),鼠标松开(mouseup事件),鼠标移动(mousemove事件)这几个事件。

先制作html部分实现静态效果,大图里面可移动的小块背景大小与大图一致,给小图块的背景添加background-position属性来控制小图要显示的图片区域

HTML:

            Document        

移动滑块>>>

JS部分:

获取需要的dom元素,鼠标在底部滑块上按下时,才能移动,所以在这个滑块上绑定一个鼠标按下事件,在这个事件里通过event这个对象获取鼠标的坐标点并减去小块的偏移量来获取滑块移动的偏差值(鼠标的坐标点减去这个偏差值才是真实移动的距离),移动状态变为可滑动。

let banner=document.querySelector('.banner');let blankBox=document.querySelector('.blank-box');let block=document.querySelector('.block');let moveBlock=document.querySelector('.move-block');let isDrop=false;//是否可滑动let x,y;//偏移量moveBlock.onmousedown=function(e){    var e=e||window.event;    x=e.clientX - block.offsetLeft;    y=e.clientY - block.offsetTop;    isDrop=true;}

当滑动状态为true时,用鼠标的坐标点减去这个偏差值,并对二个可移动的滑块重新定位。滑块滑动到大图缺少区域即为验证成功。

moveBlock.onmousemove=function(e){            if(isDrop){                var e=e||window.event;                let left= e.clientX-x;                block.style.left=left+'px';                moveBlock.style.left=left+'px';                //200大图里面缺失区域距离左边的位置                if(Math.abs(left-200)<=3){                   alert('验证成功');                }            }                    }

到这里已经初步实现效果了,但是滑块会超出大图的范围,需要给滑块的滑动距离加个限定,不然它会超出大图的范围,

moveBlock.onmousemove=function(e){            if(isDrop){                var e=e||window.event;                let left= e.clientX-x;                let maxX=banner.offsetWidth-block.offsetWidth;                //范围限定                if(left<0){                    left=0                }                if(left>maxX){                    left=maxX                }                block.style.left=left+'px';                moveBlock.style.left=left+'px';                //200大图里面缺失区域距离左边的位置                if(Math.abs(left-200)<=3){                    alert('验证成功');                }            }                    }

鼠标松开可移动状态变为false,为了防止移动过快,把事件绑定到document上

_document.onmouseup=function(){            isDrop=false;        }

到这里效果已经实现了,如果想要背景大图的缺失区域是随机的可以加个,随机定位函数。

//随机定位        function randomPosition(){            /*随机数公式取 n-m之间的随机数  Math.random() * (m-n)+n*/            let ranX=Math.round(Math.random()* (banner.offsetWidth-100)+100);            let ranY=Math.round(Math.random() * (banner.offsetHeight-0)+0);            blankBox.style.left=ranX+'px';            blankBox.style.top=ranY+'px';            block.style.top=ranY+'px';            block.style.backgroundPosition=-ranX+'px '+-ranY+'px'        }

全部代码:

            Document        

移动滑块>>>

到此,相信大家对"怎么用JavaScript实现滑块验证码"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

移动 大图 鼠标 验证 事件 区域 效果 背景 定位 成功 缺失 范围 随机数 位置 偏差 标点 状态 偏移 之间 公式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司做资料员 没有字段数量限制的数据库 科技查新中文数据库有哪些 成都大数据软件开发多少钱 user服务器熔断 电脑网络安全检查重点 sql数据库目录在哪 杭州聆客网络技术有限公司 如何清除单元格为0的数据库 联网报警视频服务器hm怎么接线 常用数据库系统的连接方式 安徽网络技术开发 2021网络安全宣传周主场 三星软件开发者中心 广西网络安全系统公司 搭建窄宽带拨号上网服务器 中国华为信息与网络技术学院 小学二年级网络安全班队会记录 web服务器溢出攻击 dna数据库有啥用啊 vs怎么执行客户端与服务器 上海app软件开发公司推荐 共享服务器怎么使用 当多个工作站同时访问服务器 朋友圈数据库设计 黄浦区一站式软件开发成本价 创建数据库中的数据表结构 襄阳软件开发软件公司 上海靖貅互联网科技有限公司 网络安全志愿者活动总结
0