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

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

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

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

效果图如下:

源代码如下:

复制代码 代码如下:

<!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

时间: 2024-08-03 01:42:54

js仿百度贴吧验证码特效实例代码_javascript技巧的相关文章

用原生JS对AJAX做简单封装的实例代码_javascript技巧

首先,我们需要xhr对象.这对我们来说不难,封装成一个函数. var createAjax = function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject("microsoft.xmlhttp"); } catch (e1) { try { //非IE浏览器 xhr = new XMLHttpRequest(); } catch (e2) { window.alert("您的浏览器不支持ajax,请

js控制li的隐藏和显示实例代码_javascript技巧

html页面 <div class="favorite_list"> <div class="list_type" id="list_type"> <ul class="all"> <li> <a href="javascript:void(0);" onclick="showli(1);">全部(<span class=

JS获取和修改元素样式的实例代码_javascript技巧

1.获取元素样式: 可以通过元素的style属性,获取元素行内样式.style属性是一个对象,包括一系列样式属性.例如:color, backgourdColor. 上面讲的通过style属性获取元素样式,不推荐使用. 下面的一段代码,可以获取元素运行时的样式,即全局的样式.这种方式可以动态获取元素的样式,例如元素大小. // node:将要获取其计算样式的元素节点 // attr: 样式属性名称 function getCurrentStyle(node, attr) { var style

基于JS实现新闻列表无缝向上滚动实例代码_javascript技巧

当新闻较多,并且空前有限的时候,使用滚动是一个不错的选择,本章节就通过代码实例介绍一下如何实现此效果. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.jb51.net/" /> <title>文字列表无缝向上滚动代码<

JavaScript实现的Tween算法及缓冲特效实例代码_javascript技巧

本文实例讲述了JavaScript实现的Tween算法及缓冲特效.分享给大家供大家参考,具体如下: 这里演示Tween 算法及缓冲特效的JavaScript代码,利用它可以做缓动.弹簧等很多动画效果,怎么利用flash的Tween类的算法,来做js的Tween算法,并利用它做一些简单的缓动效果呢,看懂了本代码你就明白了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-tween-run-style-codes/ 具体代码如下: <!DOC

js仿百度登录页实现拖动窗口效果_javascript技巧

在web开发中,鼠标拖拽效果非常常见,例如百度的登录页,点击登录会弹出一个窗口,并且这个窗口可以拖动:那么这样的拖拽效果如何实现呢 ?其实实现很简章,搞清楚他的原理就很容易了:首当其冲的,要涉及到鼠标的三个事件,分别为鼠标按下.移动.松开:在这三个事件里分别计算元素鼠标的位置即可: 复制代码 /******* 拖拽原理1: 拖拽状态 = 0 鼠标在元素上按下的时候 { 拖拽状态 = 1 记录下鼠标的x和y坐标 记录下元素的x和y坐标 } 鼠标在元素上移动的时候 { 如果拖拽状态是0就什么也不做.

JS 仿腾讯发表微博的效果代码_javascript技巧

最近2天研究了下 腾讯发表微博的效果 特此来分享下,效果如下:   在此分享前 来谈谈本人编写代码的习惯,很多人会问我既然用的是jquery框架 为什么写的组件不用Jquery那种形式?我当时回答的是:每个人编写代码有每个人的习惯.但是我更想表达的是:这种编码个人觉得 有一个很大的优点,我不是非常依赖于Jquery框架,因为不同的公司有不同的框架 比如在淘宝用的kissy框架 在支付宝用的是支付宝框架 在百度用的是百度框架 在腾讯有腾讯的前端js框架 假如我的编写代码太依赖于jquery 那假如

JS获取月的最后一天与JS得到一个月份最大天数的实例代码_javascript技巧

<html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页</title> <script language="javascript"> function getLastDay(year,month) { var new_year = year; //取当前的年份 var new_month = month++;//取下一个月的第一天,方便计

JS中frameset框架弹出层实例代码_javascript技巧

前段时间做项目,有个功能是消息提醒. 我相信很多大牛都做过.下面来分享我遇到的问题和解决方案. 首先我们的项目是用frameset框架,main代码. <frameset name="myFrame" cols="85,*" frameborder="no" border="0" framespacing="0"> <frame src="${base}/left.jsp&quo