使用canvas及js简单生成验证码方法
发布时间 - 2026-01-11 00:29:42 点击率:次在很多时候都需要用到验证码,前端验证码需要知道Html5中的canvas知识点。验证码生成步骤是:

1.生成一张画布canvas
2.生成随机数验证码
3.在画布中生成干扰线
4.把验证码文本填充到画布中
5.点击画布更换验证码
结构与样式:
<canvas id="mycanvas" width='90' height='40'>
您的浏览器不支持canvas,请换个浏览器试试~
</canvas>
<style>
#mycanvas{
cursor: pointer;
}
</style>
下面来编写js代码:
/*生成4位随机数*/
function rand(){
var str="abcdefghijklmnopqrstuvwxyz0123456789";
var arr=str.split("");
var validate="";
var ranNum;
for(var i=0;i<4;i++){
ranNum=Math.floor(Math.random()*36); //随机数在[0,35]之间
validate+=arr[ranNum];
}
return validate;
}
/*干扰线的随机x坐标值*/
function lineX(){
var ranLineX=Math.floor(Math.random()*90);
return ranLineX;
}
/*干扰线的随机y坐标值*/
function lineY(){
var ranLineY=Math.floor(Math.random()*40);
return ranLineY;
}
function clickChange(){
var mycanvas=document.getElementById('mycanvas');
var cxt=mycanvas.getContext('2d');
cxt.fillStyle='#000';
cxt.fillRect(0,0,90,40);
/*生成干扰线20条*/
for(var j=0;j<20;j++){
cxt.strokeStyle='#fff';
cxt.beginPath(); //若省略beginPath,则每点击一次验证码会累积干扰线的条数
cxt.moveTo(lineX(),lineY());
cxt.lineTo(lineX(),lineY());
cxt.lineWidth=0.5;
cxt.closePath();
cxt.stroke();
}
cxt.fillStyle='red';
cxt.font='bold 20px Arial';
cxt.fillText(rand(),25,25); //把rand()生成的随机数文本填充到canvas中
}
clickChange();
/*点击验证码更换*/
mycanvas.onclick=function(e){
e.preventDefault(); //阻止鼠标点击发生默认的行为
clickChange();
};
这样就写好一个较普通的验证码了,当然也有很多需要优化的地方,比如干扰线的随机颜色、可以加干扰点以及文本的随机位置随机颜色等等。赶紧去试试吧~
# canvas
# 生成验证码
# js
# 绘制验证码
# js生成验证码
# 原生js+canvas实现验证码
# js+h5 canvas实现图片验证码
# js+canvas绘制图形验证码
# JavaScript使用canvas绘制随机验证码
# JS+HTML5 canvas绘制验证码示例
# JavaScript Canvas实现验证码
# js+canvas实现验证码功能
# js+canvas实现滑动拼图验证码功能
# js实现点击获取验证码倒计时效果
# js canvas实现验证码并获取验证码功能
# 验证码
# 随机数
# 您的
# 也有
# 坐标值
# 不支持
# 换个
# 好一个
# 条数
# 就写
# 鼠标点击
# 试试吧
# cursor
# pointer
# gt
# style
# arr
# validate
# split
# str
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
大同网页,大同瑞慈医院官网?
详解MySQL数据库的安装与密码配置
Python面向对象测试方法_mock解析【教程】
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel如何创建自定义Artisan命令?(代码示例)
教你用AI将一段旋律扩展成一首完整的曲子
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在万网自助建站平台快速创建网站?
如何在七牛云存储上搭建网站并设置自定义域名?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
如何在阿里云服务器自主搭建网站?
详解jQuery中的事件
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
zabbix利用python脚本发送报警邮件的方法
Android自定义listview布局实现上拉加载下拉刷新功能
轻松掌握MySQL函数中的last_insert_id()
如何快速查询网站的真实建站时间?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
微信小程序 require机制详解及实例代码
如何用西部建站助手快速创建专业网站?
如何在局域网内绑定自建网站域名?
如何用PHP快速搭建CMS系统?
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
如何注册花生壳免费域名并搭建个人网站?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
JavaScript模板引擎Template.js使用详解
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Linux系统运维自动化项目教程_Ansible批量管理实战
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何处理CORS跨域请求?(配置示例)
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
中山网站推广排名,中山信息港登录入口?
企业网站制作这些问题要关注
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
海南网站制作公司有哪些,海口网是哪家的?
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
如何在香港服务器上快速搭建免备案网站?
详解vue.js组件化开发实践
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel Session怎么存储_Laravel Session驱动配置详解
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
如何在万网开始建站?分步指南解析

