js+canvas繪制圖形驗(yàn)證碼
本文實(shí)例為大家分享了利用canvas繪制圖形驗(yàn)證碼的具體代碼,供大家參考,具體內(nèi)容如下
思路:通過隨機(jī)獲取指定字符串的指定數(shù)的字符,通過canvas繪制出來
返回指定范圍的隨機(jī)整數(shù)
//指定范圍的隨機(jī)函數(shù):返回指定范圍內(nèi)的隨機(jī)整數(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ù)量的隨機(jī)字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必須減一否則會(huì)出現(xiàn)下標(biāo)越界
code += str.charAt(index) + ' ';
}
return code
}
繪制圖形
function verify(selector) {
//獲取canvas的dom對(duì)象
var cas = document.querySelector(selector);
//獲取上下文對(duì)象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//繪制矩形,作背景色
ctx.fillStyle = 'orange';
//繪制實(shí)心矩形
ctx.fillRect(0, 0, 160, 50)
//文字居中
// ctx.textAlign = 'left'
//字體樣式的屬性要遵循css中的書寫順序
ctx.font = '900 24px 宋體'
//設(shè)置字體顏色
ctx.fillStyle = '#FFF';
//繪制文字
ctx.fillText(code, 20, 30);
}
鼠標(biāo)點(diǎn)擊更新驗(yàn)證碼
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>繪制圖形驗(yàn)證碼</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對(duì)象
var cas = document.querySelector(selector);
//獲取上下文對(duì)象
var ctx = cas.getContext('2d');
//指定接收的字符串
var code = randStr(5);
//繪制矩形,作背景色
ctx.fillStyle = 'orange';
//繪制實(shí)心矩形
ctx.fillRect(0, 0, 160, 50)
//字體樣式的屬性要遵循css中的書寫順序
ctx.font = '900 24px 宋體'
//設(shè)置字體顏色
ctx.fillStyle = '#FFF';
//繪制文字
ctx.fillText(code, 20, 30);
}
//指定范圍的隨機(jī)函數(shù):返回指定范圍內(nèi)的隨機(jī)整數(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;
}
//返回隨機(jī)字符串
function randStr(count) {
var str = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var code = '';
for (var i = 0; i < count; i++) {
var index = rand(0, str.length - 1)//必須減一否則會(huì)出現(xiàn)下標(biāo)越界
code += str.charAt(index) + ' ';
}
return code
}
// console.log(randStr(6))
</script>
</html>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 原生js+canvas實(shí)現(xiàn)驗(yàn)證碼
- js+h5 canvas實(shí)現(xiàn)圖片驗(yàn)證碼
- JavaScript使用canvas繪制隨機(jī)驗(yàn)證碼
- JS+HTML5 canvas繪制驗(yàn)證碼示例
- JavaScript Canvas實(shí)現(xiàn)驗(yàn)證碼
- js+canvas實(shí)現(xiàn)驗(yàn)證碼功能
- js+canvas實(shí)現(xiàn)滑動(dòng)拼圖驗(yàn)證碼功能
- 使用canvas及js簡單生成驗(yàn)證碼方法
- js實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- js canvas實(shí)現(xiàn)驗(yàn)證碼并獲取驗(yàn)證碼功能
相關(guān)文章
基于 Immutable.js 實(shí)現(xiàn)撤銷重做功能的實(shí)例代碼
這篇文章主要介紹了基于 Immutable.js 實(shí)現(xiàn)撤銷重做功能及一些需要注意的地方,需要的朋友可以參考下2018-03-03
IE 下Enter提交表單存在重復(fù)提交問題的解決方法
這篇文章主要介紹了IE 下Enter提交表單存在重復(fù)提交問題的解決方法,需要的朋友可以參考下2014-05-05
JavaScript實(shí)現(xiàn)日期格式化詳細(xì)實(shí)例
這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)日期格式化的相關(guān)資料,JavaScript中的日期對(duì)象提供了許多方法和屬性,可以通過它們來進(jìn)行日期的格式化,需要的朋友可以參考下2023-09-09
使用百度地圖實(shí)現(xiàn)地圖網(wǎng)格的示例
下面小編就為大家分享一篇使用百度地圖實(shí)現(xiàn)地圖網(wǎng)格的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02

