<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            網頁設計

            HTML5中canvas標簽實現刮刮卡效果

            時間:2025-05-15 16:28:56 網頁設計 我要投稿
            • 相關推薦

            HTML5中canvas標簽實現刮刮卡效果

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

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

              HTML

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

              代碼如下:

              <canvas></canvas>

              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();

              }

              }

              }

              //...

              });

            【HTML5中canvas標簽實現刮刮卡效果】相關文章:

            基于html5 canvas實現漫天飛雪效果的方法09-16

            HTML5中Canvas的事件處理介紹06-26

            html5的canvas方法使用09-29

            HTML5的Audio標簽使用詳解08-09

            用canvas就可以實現圖片的濾鏡轉化代碼實現07-19

            解決html5中video標簽無法播放mp4問題09-17

            html5使用canvas畫三角形09-21

            14個基于HTML5實現的特效07-17

            php使用html5實現多文件上傳實例09-04

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看