使用HTML5canvas標簽實現刮刮卡效果

2024-04-17    分類: 網站建設

大家有沒有玩過刮刮卡么?一不小心可以中獎的那種。今天我給大家分享一個基于HTML5技術實現的刮刮卡效果,在PC上只需按住鼠標,在手機上你只需按住指頭,輕輕刮去圖層就可以模擬真實的刮獎效果。

源碼下載:點擊下載

我們利用HTML5的畫布Canvas,結合其提供的API,在Canvas元素上繪制一個灰色蒙層,然后通過檢測用戶鼠標移到和手勢來繪制一個透明的圖形,這樣就能看到Canvas背景下的真實圖片,就達到刮刮卡效果。

HTML

我們只需要在頁面中加入canvas標簽元素,其他的就看javascript的了。注意canvas元素是HTML5才有的元素,運行在支持HTML5的現代瀏覽器上。

復制代碼 代碼如下:

Javascript 首先,我們要禁用頁面的鼠標選中拖動的事件,就是不運行執行選中操作。

復制代碼 代碼如下:

var bodyStyle = document.body.style; bodyStyle.mozUserSelect = 'none'; bodyStyle.webkitUserSelect = 'none';

接著我們定義圖片類,獲取canvas元素,并設置背景和位置屬性。我們在本例中用到兩張隨機照片,每次刷新隨機一張圖片作為背景。

復制代碼 代碼如下:

var img = new Image(); var canvas = document.querySelector('canvas'); canvas.style.backgroundColor='transparent'; canvas.style.position = 'absolute'; var imgs = ['p_0.jpg','p_1.jpg']; var num = Math.floor(Math.random()*2); img.src = imgs[num];

然后進入主體,當檢測到圖片加載完的時候,首先定義一些屬性和函數,函數layer()用來繪制一個灰色的正方形,eventDown()定義了按下事件eventUp()定義了松開事件,eventMove()定義了移動事件,其中當按下時,獲取坐標位移,并通過arc(x, y, 10, 0, Math.PI * 2)來繪制小圓點。

復制代碼 代碼如下:

img.addEventListener('load', function(e) { var ctx; var w = img.width, h = img.height; var offsetX = canvas.offsetLeft, offsetY = canvas.offsetTop; var mousedown = false;

function layer(ctx) { ctx.fillStyle = 'gray'; ctx.fillRect(0, 0, w, h); }

function eventDown(e){ e.preventDefault(); mousedown=true; }

function eventUp(e){ e.preventDefault(); mousedown=false; }

function eventMove(e){ e.preventDefault(); if(mousedown) { if(e.changedTouches){ e=e.changedTouches[e.changedTouches.length-1]; } var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0, y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0; with(ctx) { beginPath() arc(x, y, 10, 0, Math.PI * 2);//繪制圓點 fill(); } } }

//... });

最后,通過canvas調用以上函數,繪制圖形,并且偵聽觸控及鼠標事件,調用相應的函數,請看代碼:

復制代碼 代碼如下:

img.addEventListener('load', function(e) { //..接上段代碼 canvas.width=w; canvas.height=h; canvas.style.backgroundImage='url('+img.src+')'; ctx=canvas.getContext('2d'); ctx.fillStyle='transparent'; ctx.fillRect(0, 0, w, h);//繪制矩形 layer(ctx);

ctx.globalCompositeOperation = 'destination-out';

canvas.addEventListener('touchstart', eventDown); canvas.addEventListener('touchend', eventUp); canvas.addEventListener('touchmove', eventMove); canvas.addEventListener('mousedown', eventDown); canvas.addEventListener('mouseup', eventUp); canvas.addEventListener('mousemove', eventMove);

你可以下載DEMO中的完整的代碼,你可以根據實際需求,結合后臺程序與數據庫,完成一個真正的刮刮卡程序。 本文來源于成都網站建設公司與成都網站設計制作公司-創新互聯成都公司!

文章名稱:使用HTML5canvas標簽實現刮刮卡效果
網站URL:http://m.kartarina.com/news30/323980.html

成都網站建設公司_創新互聯,為您提供App設計軟件開發品牌網站設計網站維護網站制作域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 成人无码午夜在线观看| 久久午夜无码鲁丝片午夜精品| 无码8090精品久久一区| 免费无码黄十八禁网站在线观看| 免费无码AV电影在线观看| 亚洲综合av永久无码精品一区二区| 无码少妇一区二区性色AV | 2019亚洲午夜无码天堂| 免费无码一区二区| 亚洲a∨无码男人的天堂| 亚洲人成无码网站久久99热国产| 日韩精品无码专区免费播放| 国产成人精品无码专区| 亚洲AV无码AV日韩AV网站| 亚洲中文字幕无码一区二区三区| 日韩av片无码一区二区不卡电影| 久久久久无码精品亚洲日韩| 国产无码一区二区在线| 亚洲av成人无码网站…| 91精品日韩人妻无码久久不卡| 中文字幕无码不卡在线| 国产精品亚洲专区无码WEB| 久久无码国产专区精品| 精品无码AV一区二区三区不卡| 国产亚洲精久久久久久无码| 久青草无码视频在线观看| 国产精品无码一区二区在线观 | 无码人妻丰满熟妇精品区| 韩国免费a级作爱片无码| 亚洲AV无码一区二区三区在线观看| 99久久国产热无码精品免费| 人妻av无码一区二区三区| 无码h黄肉3d动漫在线观看| 久久午夜无码免费| 国产AV无码专区亚洲AV男同| 亚洲AV无码久久精品狠狠爱浪潮 | 无码国产69精品久久久久孕妇| 亚洲国产成人精品无码区在线网站| 国产AV无码专区亚洲AVJULIA | 精品人妻无码区在线视频| 人妻丰满熟妞av无码区|