js+canvas繪制圖形驗證碼
更新時間:2020年09月21日 15:43:27 作者:小萌新0.0
這篇文章主要為大家詳細介紹了js+canvas繪制圖形驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了利用canvas繪制圖形驗證碼的具體代碼,供大家參考,具體內(nèi)容如下
思路:通過隨機獲取指定字符串的指定數(shù)的字符,通過canvas繪制出來
返回指定范圍的隨機整數(shù)
//指定范圍的隨機函數(shù):返回指定范圍內(nèi)的隨機整數(shù)
function rand(min, max) {
/*
max=10
min=1
Math.random()=0 最小取到1
Math.random()=0.9999*10=Math.floor(9.9)=>+1=10
*/
return Math.floor(Math.random() * (max - min + 1)) + min;
}
返回指定數(shù)量的隨機字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必須減一否則會出現(xiàn)下標越界
code += str.charAt(index) + ' ';
}
return code
}
繪制圖形
function verify(selector) {
//獲取canvas的dom對象
var cas = document.querySelector(selector);
//獲取上下文對象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//繪制矩形,作背景色
ctx.fillStyle = 'orange';
//繪制實心矩形
ctx.fillRect(0, 0, 160, 50)
//文字居中
// ctx.textAlign = 'left'
//字體樣式的屬性要遵循css中的書寫順序
ctx.font = '900 24px 宋體'
//設置字體顏色
ctx.fillStyle = '#FFF';
//繪制文字
ctx.fillText(code, 20, 30);
}
鼠標點擊更新驗證碼
document.querySelector('canvas').addEventListener('click', function () {
verify('canvas')
})
完整代碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>繪制圖形驗證碼</title>
<style>
canvas {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas width="160" height="50"></canvas>
</body>
<script>
verify('canvas')
document.querySelector('canvas').addEventListener('click', function () {
verify('canvas')
})
function verify(selector) {
//獲取canvas的dom對象
var cas = document.querySelector(selector);
//獲取上下文對象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//繪制矩形,作背景色
ctx.fillStyle = 'orange';
//繪制實心矩形
ctx.fillRect(0, 0, 160, 50)
//字體樣式的屬性要遵循css中的書寫順序
ctx.font = '900 24px 宋體'
//設置字體顏色
ctx.fillStyle = '#FFF';
//繪制文字
ctx.fillText(code, 20, 30);
}
//指定范圍的隨機函數(shù):返回指定范圍內(nèi)的隨機整數(shù)
function rand(min, max) {
/*
max=10
min=1
Math.random()=0 最小取到1
Math.random()=0.9999*10=Math.floor(9.9)=>+1=10
*/
return Math.floor(Math.random() * (max - min + 1)) + min;
}
//返回隨機字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必須減一否則會出現(xiàn)下標越界
code += str.charAt(index) + ' ';
}
return code
}
// console.log(randStr(6))
</script>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
vue?element?loading遮罩層添加按鈕功能實現(xiàn)
這篇文章主要介紹了vue?element?loading遮罩層添加按鈕功能實現(xiàn),通過實例代碼補充介紹了vue+elementui的this.$loading遮罩使用方法,需要的朋友可以參考下2024-03-03
javascript數(shù)字數(shù)組去重復項的實現(xiàn)代碼
console.log 不支持ie,下面的代碼需要在火狐中測試,不然會有問題。2010-12-12
JS將指定的某個字符全部轉(zhuǎn)換為其他字符實例代碼
這篇文章主要給大家介紹了關于JS如何將指定的某個字符全部轉(zhuǎn)換為其他字符的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
微信小程序開發(fā)的四十個技術竅門總結(jié)(推薦)
這篇文章主要給大家介紹了微信小程序開發(fā)的四十個技術竅門的相關資料,相信對大家的學習或者使用微信小程序具有一定的參考借鑒價值,所以特別推薦給大家,需要的朋友們可以一起來看看吧。2017-01-01

