使用canvas及js簡(jiǎn)單生成驗(yàn)證碼方法
在很多時(shí)候都需要用到驗(yàn)證碼,前端驗(yàn)證碼需要知道Html5中的canvas知識(shí)點(diǎn)。驗(yàn)證碼生成步驟是:
1.生成一張畫(huà)布canvas
2.生成隨機(jī)數(shù)驗(yàn)證碼
3.在畫(huà)布中生成干擾線
4.把驗(yàn)證碼文本填充到畫(huà)布中
5.點(diǎn)擊畫(huà)布更換驗(yàn)證碼
結(jié)構(gòu)與樣式:
<canvas id="mycanvas" width='90' height='40'> 您的瀏覽器不支持canvas,請(qǐng)換個(gè)瀏覽器試試~ </canvas> <style> #mycanvas{ cursor: pointer; } </style>
下面來(lái)編寫(xiě)js代碼:
/*生成4位隨機(jī)數(shù)*/ 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); //隨機(jī)數(shù)在[0,35]之間 validate+=arr[ranNum]; } return validate; } /*干擾線的隨機(jī)x坐標(biāo)值*/ function lineX(){ var ranLineX=Math.floor(Math.random()*90); return ranLineX; } /*干擾線的隨機(jī)y坐標(biāo)值*/ 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,則每點(diǎn)擊一次驗(yàn)證碼會(huì)累積干擾線的條數(shù) 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()生成的隨機(jī)數(shù)文本填充到canvas中 } clickChange(); /*點(diǎn)擊驗(yàn)證碼更換*/ mycanvas.onclick=function(e){ e.preventDefault(); //阻止鼠標(biāo)點(diǎn)擊發(fā)生默認(rèn)的行為 clickChange(); };
這樣就寫(xiě)好一個(gè)較普通的驗(yàn)證碼了,當(dāng)然也有很多需要優(yōu)化的地方,比如干擾線的隨機(jī)顏色、可以加干擾點(diǎn)以及文本的隨機(jī)位置隨機(jī)顏色等等。趕緊去試試吧~
- 原生js+canvas實(shí)現(xiàn)驗(yàn)證碼
- js+h5 canvas實(shí)現(xiàn)圖片驗(yàn)證碼
- js+canvas繪制圖形驗(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)證碼功能
- js實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
- js canvas實(shí)現(xiàn)驗(yàn)證碼并獲取驗(yàn)證碼功能
相關(guān)文章
JS實(shí)現(xiàn)可拖曳、可關(guān)閉的彈窗效果
這篇文章主要介紹了JS實(shí)現(xiàn)可拖曳、可關(guān)閉的彈窗效果,可實(shí)現(xiàn)點(diǎn)擊文字彈出可拖動(dòng)的窗口,同時(shí)背景出現(xiàn)變暗的遮罩效果,點(diǎn)擊遮罩層即可關(guān)閉彈出,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09微信小程序?qū)崿F(xiàn)菜單左右聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)菜單左右聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05js實(shí)現(xiàn)網(wǎng)頁(yè)隨機(jī)切換背景圖片的方法
這篇文章主要介紹了js實(shí)現(xiàn)網(wǎng)頁(yè)隨機(jī)切換背景圖片的方法,涉及數(shù)組、隨機(jī)函數(shù)與css樣式的調(diào)用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11基于JavaScript實(shí)現(xiàn)密碼框驗(yàn)證信息
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)密碼框驗(yàn)證信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

JS彈出層遮罩,隱藏背景頁(yè)面滾動(dòng)條細(xì)節(jié)優(yōu)化分析

npm install報(bào)錯(cuò)無(wú)法創(chuàng)建packge.json文件的解決辦法