Vue实现验证码功能
本文实例为大家分享了Vue实现验证码的具体代码,供大家参考,具体内容如下
1.效果
2.代码
2.1创建js组件
内容
(可直接粘贴过去,需要改宽度和高度,修改_init方法中的宽和高)
functionGVerify(options){//创建一个图形验证码对象,接收options对象为参数
this.options={//默认options参数值
id:'',//容器Id
canvasId:'verifyCanvas',//canvas的ID
width:'80',//默认canvas宽度
height:'30',//默认canvas高度
type:'number',//图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母
code:''
}
if(Object.prototype.toString.call(options)==='[objectObject]'){//判断传入参数类型
for(variinoptions){//根据传入的参数,修改默认参数值
this.options[i]=options[i]
}
}else{
this.options.id=options
}
this.options.numArr='0,1,2,3,4,5,6,7,8,9'.split(',')
this.options.letterArr=getAllLetter()
this._init()
this.refresh()
}
GVerify.prototype={
/**版本号**/
version:'1.0.0',
/**初始化方法**/
_init:function(){
varcon=document.getElementById(this.options.id)
varcanvas=document.createElement('canvas')
//this.options.width=con.offsetWidth>0?con.offsetWidth:'30'
//this.options.height=con.offsetHeight>0?con.offsetHeight:'30'
this.options.width='160'
this.options.height='50'
canvas.id=this.options.canvasId
canvas.width=this.options.width
canvas.height=this.options.height
canvas.style.cursor='pointer'
canvas.innerHTML='您的浏览器版本不支持canvas'
con.appendChild(canvas)
varparent=this
canvas.onclick=function(){
parent.refresh()
}
},
/**生成验证码**/
refresh:function(){
varcanvas=document.getElementById(this.options.canvasId)
if(canvas.getContext){
varctx=canvas.getContext('2d')
}
ctx.textBaseline='middle'
ctx.fillStyle=randomColor(180,240)
ctx.fillRect(0,0,this.options.width,this.options.height)
if(this.options.type==='blend'){//判断验证码类型
vartxtArr=this.options.numArr.concat(this.options.letterArr)
}elseif(this.options.type==='number'){
vartxtArr=this.options.numArr
}else{
vartxtArr=this.options.letterArr
}
for(vari=1;i<=4;i++){
vartxt=txtArr[randomNum(0,txtArr.length)]
this.options.code+=txt
ctx.font=randomNum(this.options.height/2,this.options.height)+'pxSimHei'//随机生成字体大小
ctx.fillStyle=randomColor(50,160)//随机生成字体颜色
ctx.shadowOffsetX=randomNum(-3,3)
ctx.shadowOffsetY=randomNum(-3,3)
ctx.shadowBlur=randomNum(-3,3)
ctx.shadowColor='rgba(0,0,0,0.3)'
varx=this.options.width/5*i
vary=this.options.height/2
vardeg=randomNum(-30,30)
/**设置旋转角度和坐标原点**/
ctx.translate(x,y)
ctx.rotate(deg*Math.PI/180)
ctx.fillText(txt,0,0)
/**恢复旋转角度和坐标原点**/
ctx.rotate(-deg*Math.PI/180)
ctx.translate(-x,-y)
}
/**绘制干扰线**/
for(vari=0;i<4;i++){
ctx.strokeStyle=randomColor(40,180)
ctx.beginPath()
ctx.moveTo(randomNum(0,this.options.width),randomNum(0,this.options.height))
ctx.lineTo(randomNum(0,this.options.width),randomNum(0,this.options.height))
ctx.stroke()
}
/**绘制干扰点**/
for(vari=0;i
2.2登录页面
2.2.1引入组件
[....
.verify_css{
width:45%;
}
.login-wrap{
position:relative;
width:100%;
height:100%;
}
.ms-title{
position:absolute;
top:50%;
width:100%;
margin-top:-230px;
text-align:center;
font-size:30px;
color:#fff;
}
.ms-login{
position:absolute;
left:50%;
top:50%;
width:300px;
height:13rem;
margin:-150px00-190px;
padding:40px;
border-radius:6%;
background:#fff;
box-shadow:-2px-2px17px1px#1e9fff;
}
.login-btn{
text-align:center;
}
.login-btnbutton{
width:100%;
height:36px;
}
.video-bg{
min-width:100%;
min-height:100%;
width:100%;
height:100%;
opacity:0.9;
}
video{
width:100%;
height:100%;
object-fit:cover;
/*opacity:0.6;*/
}
.loginBtn:hover{
box-shadow:0px1px4pxrgba(0,0,0,0.3),
0px0px20pxrgba(0,0,0,0.1)inset;
}
#v_container{
width:auto;
height:auto;
display:inline-flex;
position:relative;
top:1rem;
margin-top:-2rem;
}
git参考源码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。