js仿百度贴吧验证码特效实例代码


Posted in Javascript onJanuary 16, 2014

今天看到有百度验证码挺有意思的,就把它仿下来了。

利用JS实现当选择满4个后自动对比,本文中采用静态对比的方法看你是否全部选择对。然后提示【答案正确!】或【答案错误!】,

以后有空再去做成程序,先分享给大家!

效果图如下:

js仿百度贴吧验证码特效实例代码

源代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
    <title>js仿百度贴吧验证码特效</title>  
    <style>  
    div{margin:0;padding:0;}  
    .com{width:246px;font-size:12px;padding:12px;border:1px solid #ccc;}  
    .clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.clearfix{zoom:1}      .j_captcha_input{border:1px solid #ccc;}  
    .val_add b,.input_show span,.val_input a b{background:url(http://images/20140113213606506.png) no-repeat -500px -500px;}  
    .input_show{height:36px;margin-bottom:5px;}  
    .input_show span{background-position:0 0;display: inline-block;height: 36px;margin-right: 5px;vertical-align: middle;width: 150px;}  
    .val_add{border:1px solid #CCC;word-break: break-all;margin:0 20px 5px 0;}  
    .val_add b{border-right:1px solid #ddd;height: 34px;width: 45px;float:left;}  
    .val_add .delete{background:url(http://images/20140113213531521.png) no-repeat 0 0 #ccc;border-right:0 none;cursor:pointer;width: 40px;}  
    .ation i{font-style:normal;color:#ff0000;}  
    .val_input{width:190px;margin-top:5px;}  
    .val_input a{display:block;float:left;margin:0 5px 5px 0;width:54px;height:40px;border:1px solid #e0e0e0;border-bottom-color:#bfbfbf;outline:0;background:-ms-linear-gradient(top,#fff,#f5f5f5);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f5f5f5));background:-moz-linear-gradient(top,#fff,#fafafa);filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#FFFFFF,endColorStr=#F5F5F5);zoom:1}  
    .val_input a b{width:54px;height:40px;cursor:pointer;zoom:1;display:block;}  
    .val_input #v_0{background-position:0 -36px}  
    .val_input #v_1{background-position:-53px -36px}/*-56px -41px;*/  
    .val_input #v_2{background-position:-97px -36px}  
    .val_input #v_3{background-position:0 -87px}  
    .val_input #v_4{background-position:-53px -87px}  
    .val_input #v_5{background-position:-97px -87px}  
    .val_input #v_6{background-position:0 -133px}  
    .val_input #v_7{background-position:-53px -133px}  
    .val_input #v_8{background-position:-97px -133px}  
    </style>  
    </head>  
    <body>  
    <div class="com">  
      <div class="val_add clearfix" id="val_add">  
          <b></b>  
          <b></b>  
          <b></b>  
          <b></b>  
          <b class="delete" title="清除" onclick="dele();"></b>  
      </div>  
      <div class="input_show"><span></span><a>看不清?</a></div>  
      <div class="ation">点击框内文字输入上图中<i>汉字或拼音</i>对应汉字</div>  
      <div class="val_input clearfix" id="val_input">  
          <a href="javascript:;"><b id="v_0"></b></a>  
          <a href="javascript:;"><b id="v_1"></b></a>  
          <a href="javascript:;"><b id="v_2"></b></a>  
          <a href="javascript:;"><b id="v_3"></b></a>  
          <a href="javascript:;"><b id="v_4"></b></a>  
          <a href="javascript:;"><b id="v_5"></b></a>  
          <a href="javascript:;"><b id="v_6"></b></a>  
          <a href="javascript:;"><b id="v_7"></b></a>  
          <a href="javascript:;"><b id="v_8"></b></a>  
      </div>  
    </div>  
    <script>  
    function getid(id) {  
        return document.getElementById(id);  
    }  
    //获取属性样式  
    function getStyle(id,prop){   
        var obj=getid(id);  
        var ie = !+"\v1";//简单判断ie6~8  
        if(prop=="backgroundPosition"){//IE6~8不兼容backgroundPosition写法,识别backgroundPositionX/Y  
            if(ie){       
                return obj.currentStyle.backgroundPositionX +" "+obj.currentStyle.backgroundPositionY;  
            }  
        }  
        if (obj.currentStyle) {  
            return obj.currentStyle[prop];       
        }  
        else if (window.getComputedStyle) {  
            proppropprop = prop.replace (/([A-Z])/g, "-$1");             
            proppropprop = prop.toLowerCase ();       
             return document.defaultView.getComputedStyle (obj,null)[prop];       
        }  
    }  
    var anslist = ["","","",""];//储存容器  
    var crent="-56px -92px,-100px -138px,-100px -92px,-3px -138px"; //正确答案容器  
    var flag=0;//从第0个开始算起到当到第3个时自动对比答案  
    var adbs=getid("val_add").getElementsByTagName("b");  
    function addans(va){  
        for(var i=0;i<anslist.length;i++)  
        {  
            if(anslist[i]=="")  
            {         
                anslist[i]=va;  
                adbs[i].style.cssText="background-position:"+anslist[i];  
                flag=i;  
                break;  
            }  
        }  
        if(flag==3)  
        {  
            if(anslist==crent)  
            {  
                alert("答案正确!");  
            }  
            else  
            {  
                alert("答案错误!");  
                dele();  
            }  
        }  
    }  
    //清除原有值  
    function dele(){  
        flag=0;  
        for(var i=0;i<adbs.length;i++)  
            adbs[i].style.cssText="";  
        anslist = ["","","",""];  
    }  
    //绑定九宫格验证码的点击事件  
    function addEvt(tab,ct,type){  
        var ctab = getid(tab).getElementsByTagName("b");  
        //var cdiv = getid(ct).getElementsByTagName(type);  
        for(var i = 0;i<ctab.length;i++)  
        {   
            ctab[i].onclick =function std(){              
                //alert(this.id);  
                var st=getStyle(this.id,"backgroundPosition");  
                var ststd=st.split(" ");//属性中间的空间作为分隔符如:background-position:215px 215px; getStyle方法取得值是215px 215px;  
                var st1,st2="";  
                /*-53px -36px,-56px -41px;经对比九宫格与显示选择的答案x差-3,y差-5*/  
                st1= parseInt(std[0].replace("px"))-3;  
                st2= parseInt(std[1].replace("px"))-5;            
                addans(st1+"px "+st2+"px");  
            }  
        }  
    }  
    addEvt("val_input");  
    </script>  
    </body>  
    </html>

出处:http://www.86y.org/art_detail.aspx?id=682

Javascript 相关文章推荐
js左侧多级菜单动态的解决方案
Feb 01 Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
jquery click([data],fn)使用方法实例介绍
Jul 08 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
AngularJs  Understanding Angular Templates
Sep 02 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
Sep 16 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 Javascript
JS实现简易日历效果
Jan 25 Javascript
js中传递特殊字符(+,&amp;)的方法
Jan 16 #Javascript
利用浏览器全屏api实现js全屏
Jan 16 #Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
Jan 15 #Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 #Javascript
javascript中验证大写字母、数字和中文
Jan 15 #Javascript
setTimeout自动触发一个js的方法
Jan 15 #Javascript
JS记录用户登录次数实现代码
Jan 15 #Javascript
You might like
discuz的php防止sql注入函数
2011/01/17 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
javascript:void(0)的真正含义实例分析
2008/08/20 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
vue实现简单的MVVM框架
2018/08/05 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
简单解决Python文件中文编码问题
2015/11/22 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python实现按行分割文件
2019/07/22 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
售后服务科岗位职责范文
2013/11/13 职场文书
打架检讨书100字
2014/01/08 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
失职检讨书大全
2015/01/26 职场文书
委托函范文
2015/01/29 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js