<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 網頁設計

    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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人