登录验证码(前端)

html

<canvas id="randomCode" width="120" height="50" style="border:1px solid #bbbbbb;cursor: pointer;" title="点击更换验证码">
</canvas>

js

 function randomStr(canvasId){
     var c=document.getElementById(canvasId);
     var w=c.offsetWidth;
     var h=c.offsetHeight;
     var randomCodes = '' ;
     var ctx=c.getContext('2d');
     ctx.clearRect(0,0,120,50);    //先清除canvas画布
     //绘制矩形
     ctx.fillStyle=randColor(170,250);
     ctx.fillRect(0,0,120,50);
     // 绘制验证码
     var Letter="ABCDEFGHIJKLMNOPQRSTUVWHYZ1234567890";
     for(var i=0;i<4;i++){
         var char=Letter[Math.floor(Math.random()*Letter.length)];
         randomCodes += char ;
         var fs=randNum(35,60);//字体的大小
         var deg=randNum(-30,30);//字体的旋转角度
         ctx.font=fs+'px Simhei';
         ctx.textBaseline="top";
         ctx.fillStyle=randColor(60,160);
         ctx.save();
         ctx.translate(30*i+15,15);
         ctx.rotate(deg*Math.PI/180);
         ctx.fillText(char,-15+5,-15);
         ctx.restore();
     }
     // 绘制干扰线
     for(var q=0;q<6;q++){
         ctx.beginPath();
         ctx.lineWidth="1";
         ctx.strokeStyle=randColor(60,160); // Green path
         ctx.moveTo(randNum(0,w),randNum(0,h));
         ctx.lineTo(randNum(0,w),randNum(0,h));
         ctx.stroke(); // Draw it
     }
     return randomCodes ;
 }
 //随机颜色
 function randColor(min,max){
     var r=Math.floor(Math.random()*(max-min+1)+min);
     var g=Math.floor(Math.random()*(max-min+1)+min);
     var b=Math.floor(Math.random()*(max-min+1)+min);
     return 'rgb('+r+','+g+','+b+')';
 }
 //随机数方法
 function randNum(min,max){
     var num=Math.floor(Math.random()*(max-min+1)+min);
     return num;
 }
 var randomCodes = randomStr("randomCode");
 console.log(randomCodes) ;
 document.getElementById("randomCode").onclick = function(){
     randomCodes = randomStr("randomCode");
     console.log(randomCodes) ;
 } ;

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值