广告
返回顶部
首页 > 资讯 > 精选 >怎么用JavaScript实现滑块验证码
  • 700
分享到

怎么用JavaScript实现滑块验证码

2023-06-25 13:06:13 700人浏览 八月长安
摘要

本篇内容主要讲解“怎么用javascript实现滑块验证码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现滑块验证码”吧!效果:鼠标在底部滑块上按下按住不松拖动可以移

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

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

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

怎么用JavaScript实现滑块验证码

HTML:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        *{            margin: 0;            padding: 0;        }        body{            background: #34495e;        }        .wrap{            width: 600px;            margin: 100px auto;        }        .banner{            width: 600px;            height: 400px;            background: url(img/ChMkJ1bZOGoIE_lfABJWl176xQgAAMhjALAOLwAElav369.jpg);            background-size: 600px 400px;            position: relative;        }        .blank-box{            position: absolute;            top: 100px;            left: 200px;                        width: 50px;            height: 50px;            background: #fff;        }        .block{            position: absolute;            top: 100px;            left: 0;                        width: 50px;            height: 50px;            background: url(img/ChMkJ1bZOGOIE_lfABJWl176xQgAAMhjALAOLwAElav369.jpg);            background-size:600px 400px;            background-position:-200px -100px;            border: 1px solid red;        }        .move{            position: relative;        }        .move p{            height: 50px;            line-height: 50px;            font-size: 16px;            color: #666;            background: #eee;            text-align: center;        }        .move-block{            position: absolute;            left: 0;            top: 0;            width: 50px;            height: 50px;            background:#1abc9c;            cursor: pointer;        }    </style></head><body>    <div class="wrap">        <div class="banner">            <div class="blank-box"></div>            <div class="block"></div>        </div>        <div class="move">            <p>移动滑块>>></p>            <div class="move-block"></div>        </div>    </div>  </body></html>

 JS部分:

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

怎么用JavaScript实现滑块验证码

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时,用鼠标的坐标点减去这个偏差值,并对二个可移动的滑块重新定位。滑块滑动到大图缺少区域即为验证成功。

怎么用JavaScript实现滑块验证码

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(){                        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'        }

全部代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        *{            margin: 0;            padding: 0;        }        body{            background: #34495e;        }        .wrap{            width: 600px;            margin: 100px auto;        }        .banner{            width: 600px;            height: 400px;            background: url(img/ChMkJ1bZOGOIE_lfABJWl176xQgAAMhjALAOLwAElav369.jpg);            background-size: 600px 400px;            position: relative;        }        .blank-box{            position: absolute;            top: 100px;            left: 200px;                        width: 50px;            height: 50px;            background: #fff;        }        .block{            position: absolute;            top: 100px;            left: 0;                        width: 50px;            height: 50px;            background: url(img/ChMkJ1bZOGOIE_lfABJWl176xQgAAMhjALAOLwAElav369.jpg);            background-size:600px 400px;            background-position:-200px -100px;            border: 1px solid red;        }        .move{            position: relative;        }        .move p{            height: 50px;            line-height: 50px;            font-size: 16px;            color: #666;            background: #eee;            text-align: center;        }        .move-block{            position: absolute;            left: 0;            top: 0;            width: 50px;            height: 50px;            background:#1abc9c;            cursor: pointer;        }    </style></head><body>    <div class="wrap">        <div class="banner">            <div class="blank-box"></div>            <div class="block"></div>        </div>        <div class="move">            <p>移动滑块>>></p>            <div class="move-block"></div>        </div>    </div>      <script>        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,targetleft;//偏移量,左边定位距离        moveBlock.onmousedown=function(e){            var e=e||window.event;            x=e.clientX - block.offsetLeft;            y=e.clientY - block.offsetTop;            isDrop=true;        }        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-targetleft)<=5){                    alert('验证成功');                }            }                    }        document.onmouseup=function(){            isDrop=false;        }        //随机定位        function randomPosition(){                        let ranX=Math.round(Math.random()* (banner.offsetWidth-100)+100);            let ranY=Math.round(Math.random() * (banner.offsetHeight-0)+0);            targetleft=ranX;            blankBox.style.left=ranX+'px';            blankBox.style.top=ranY+'px';            block.style.top=ranY+'px';            block.style.backgroundPosition=-ranX+'px '+-ranY+'px'        }        randomPosition()    </script></body></html>

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

--结束END--

本文标题: 怎么用JavaScript实现滑块验证码

本文链接: https://www.lsjlt.com/news/305039.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用JavaScript实现滑块验证码
    本篇内容主要讲解“怎么用JavaScript实现滑块验证码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现滑块验证码”吧!效果:鼠标在底部滑块上按下按住不松拖动可以移...
    99+
    2023-06-25
  • JavaScript实现滑块验证码
    本文实例为大家分享了JavaScript实现滑块验证码的具体代码,供大家参考,具体内容如下 效果:鼠标在底部滑块上按下按住不松拖动可以移动滑块,上面大图里面带有小图背景的滑块也会跟随...
    99+
    2022-11-12
  • JS怎么实现滑块验证码
    本篇内容介绍了“JS怎么实现滑块验证码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!style*{   &nb...
    99+
    2023-07-05
  • JavaScript实现登录滑块验证
    本文实例为大家分享了JavaScript实现登录滑块验证的具体代码,供大家参考,具体内容如下 html代码 <div class="login-select"> ...
    99+
    2022-11-12
  • JavaScript实现滑块验证案例
    本文实例为大家分享了JavaScript实现滑块验证的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en">  ...
    99+
    2022-11-12
  • Flutter怎么实现滑动块验证码功能
    这篇文章主要介绍“Flutter怎么实现滑动块验证码功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter怎么实现滑动块验证码功能”文章能帮助大家解决问题。本文实现的是一个用于登录时,向右...
    99+
    2023-06-29
  • Python实现滑块验证码详解
    本节要讲解如下图所示的滑块验证码(更为复杂的滑动拼图验证码在下一篇介绍)。这种验证码机制比较简单:将滑块拖动到滑轨的最右端即可完成验证,如下图所示。如果未将滑块拖动到滑轨的最右端,则...
    99+
    2022-11-11
  • Java实现滑块拼图验证码
    本文实例为大家分享了Java实现滑块拼图验证码的具体代码,供大家参考,具体内容如下 1、后端随机生成抠图和带有抠图阴影的背景图片,后台保存随机抠图位置坐标 2、前端实现滑动交互,将抠...
    99+
    2022-11-12
  • JS 简单实现滑块验证码
    目录开篇:一、实现效果styleScript二、总结与思考开篇: 拖动底部滑块,实现滑块验证码功能 一、实现效果 style *{ margin: 0; padd...
    99+
    2023-05-14
    JS 滑块验证码 JS 验证码
  • Flutter实现滑动块验证码功能
    Flutter实现滑动块验证码功能,供大家参考,具体内容如下 本文实现的是一个用于登录时,向右滑动滑动块到最右边完成验证的一个功能。当滑动未到最右边时,滑动块回弹回左边起始位置。 ...
    99+
    2022-11-13
  • OpenCV结合selenium实现滑块验证码
    本次案例使用OpenCV和selenium来解决一下滑块验证码 先说一下思路: 弹出滑块验证码后使用selenium元素截图将验证码整个背景图截取出来 将需要滑动...
    99+
    2022-11-12
  • 怎么使用selenium+opencv实现滑块验证码的登陆
    本文小编为大家详细介绍“怎么使用selenium+opencv实现滑块验证码的登陆”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用selenium+opencv实现滑块验证码的登陆”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-07-06
  • 如何使用JavaScript实现滑块验证功能
    这篇文章将为大家详细讲解有关如何使用JavaScript实现滑块验证功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下<!DOCTYPE html><html&nb...
    99+
    2023-06-26
  • JavaScript实现拼图式滑块验证功能
    目录演示前戏源码介绍主页样式设计滑块验证部分img_ver内部演示 前戏 滑块验证码是在网站、APP等应用中常见的一种验证方式,通过按照一定规则滑动滑块到指定位置完成验证,才可以进...
    99+
    2022-11-13
  • js canvas实现滑块验证
    本文实例为大家分享了js canvas实现滑块验证的具体代码,供大家参考,具体内容如下 滑块验证 话不多说先上代码想用的小伙伴可以直接使用,想了解的我后面会说下我的思路 <...
    99+
    2022-11-11
  • selenium+opencv实现滑块验证码的登陆
    目录环境selenium登录网站requests抓取验证码图片OpenCV识别缺口位置模拟拖动滑块脚本示例:很多网站登录登陆时都要用到滑块验证码,在某些场景例如使用爬虫爬取信息时常常...
    99+
    2023-05-15
    selenium opencv滑块验证码 opencv滑块验证码
  • python实现腾讯滑块验证码识别
    腾讯滑块验证码识别,识别凹槽的x轴位置,mock滑块的加速度。该项目公开API,提供识别和加速度模拟部分,第二部分模拟滑动进行识别返回数据请求 项目地址:https://github.com/zhaojunlike/...
    99+
    2022-06-02
    python 验证码识别 python 滑块验证码识别 python 腾讯验证码
  • Python实现滑块拼图验证码详解
    目录初级版滑块拼图验证码补充知识点高级版滑动拼图验证码滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。 初级版滑块拼...
    99+
    2022-11-11
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2022-11-13
  • 用selenium解决滑块验证码
    前言 因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇博客主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站将残缺块图片和背...
    99+
    2023-09-04
    selenium chrome python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作