20行js代碼製作網頁刮刮樂

来源:http://www.cnblogs.com/jiaoyu121/archive/2017/06/21/7061958.html
-Advertisement-
Play Games

分享一段用canvas和JS製作刮刮樂的代碼,JS部分去掉註釋不到20行代碼效果如下 蓋倫.jpg 蓋倫.jpg 刮刮樂.gif 刮刮樂.gif 沒什麼要特別註意的為了效果加了些CSS樣式 1.為了清除瀏覽器自帶效果加了 2.img需要在灰佈下面,加了z-index;3.圖片絕對定位 js部分分析下 ...


分享一段用canvas和JS製作刮刮樂的代碼,JS部分去掉註釋不到20行代碼
效果如下


蓋倫.jpg
刮刮樂.gif
HTML部分
<body>
        ![](img/gailun.jpg)
        <canvas id="canvas" width="400" height="300"></canvas>
    </body>

沒什麼要特別註意的
為了效果加了些CSS樣式

CSS部分
<style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
            img{
                width: 400px;
                height: 300px;
                left: 200px;
                position: absolute;
                z-index: -1;
            }
            canvas{
                margin-left:200px;
            }
        </style>
註意

1.為了清除瀏覽器自帶效果加了

*{
            margin: 0;
            padding: 0;
        }

2.img需要在灰佈下面,加了z-index;
3.圖片絕對定位


js部分
分析下邏輯

1.滑鼠按下移動相應區域刮開
2.滑鼠抬起改變滑鼠位置不接著刮開

js代碼
    <script type="text/javascript">
        var canvas = document.getElementById("canvas");
        var  context =  canvas.getContext('2d');
            //畫蒙布
        context.beginPath();
        context.fillStyle= 'grey'
        context.fillRect(0,0,400,300);
        //滑鼠按下開刮
        canvas.onmousedown=function(){
            canvas.onmousemove = function(){
                //獲取滑鼠坐標
                var x = event.clientX;
                var y  = event.clientY;
                //destination-out             顯示原來的不在後來區域的部分
                context.globalCompositeOperation = "destination-out";
                context.beginPath();
                context.arc(x-200,y,30,0,Math.PI*2);
                context.fill();        
            }
        }
        //滑鼠抬起不刮開
        canvas.onmouseup=function(){
            canvas.onmousemove = function(){    
            }
        }    
        </script>

需要註意的是

1.圖片和畫布左移了200px,所以圓的起點坐標相對於獲取位置減了200px;
2.globalCompositeOperation是畫布的一個功能作用是設置或返回如何將一個源(新的)圖像繪製到目標(已有)的圖像上,還有其餘10種寫法


學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入學習交流群
343599877,我們一起學前端!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 方法的覆寫 類和父類有相同的方法,那麼類中方法的訪問許可權不能比父類中對應方法的訪問許可權嚴格,這就叫方法的覆寫,一般稱之為類覆寫了父類中的某個方法 覆寫方法的作用:對於一個類,向上轉換後(把類的實例化對象賦值給類的父類的對象),通過該父類的對象直接訪問該父類的對象的本類部分中被類所覆寫的方法時,將自動 ...
  • 學習設計模式主要是利用早上的時間,習慣於早起,之前學習的一些模式都做了一些記錄,基於自己理解的記錄。還有一些學習過,沒有做記錄的,今天就對他們做一個總結。方便自己以後的使用。 所謂的設計模式,是用的多了,方便,符合幾大原則,有優點就有缺點,有適用場景就有不適用場景,所以模式是固定的,人的思維是不固定 ...
  • 我們之前已經對對象有所瞭解了,現在我們來說一下麵向對象。 我對面向對象的認識是這樣的,所謂的面向對象就是在不懂內部原理的情況下,對它的一個使用。比如在我們的生活中, 去餐廳吃飯時,我們僅只給廚師報上菜名,廚師就會把菜做出來,不需要去告訴廚師要怎樣去做,用什麼做,這就是面向對象 。萬物皆對象,對象就是 ...
  • A. 使用選擇器來插入內容 h2:before{ content:"首碼"; } h2:after{ content:"尾碼"; } B. 指定個別的元素不進行插入 h2.sample:before{ content:none; } 2. 插入圖像 A. 在標題前插入圖像文件 h2:before{ ...
  • 日了狗啦,剛剛雞哥辛苦碼了那麼多字全丟了又要重新寫,這是第二遍寫了...今天雞哥給小白寫個不需要寫js原生代碼,只需要幾個插件和一段通俗易懂得jquery代碼就能搞定的輪播圖,當然js原生代碼寫著也不算很繁瑣,但是有些浪費時間,更何況很多人並不會用js直接寫包括雞哥,當年在學校還是研究過一段時間js ...
  • [1]標題 [2]段落 [3]內聯文本 [4]對齊 [5]大小寫 [6]縮略語 [7]地址 [8]引用 [9]列表 [10]代碼 ...
  • 一、Validate插件描述 Validate是基於jQuery的一款輕量級驗證插件,內置豐富的驗證規則,還有靈活的自定義規則介面,HTML、CSS與JS之間的低耦合能讓您自由佈局和豐富樣式,支持input,select,textarea的驗證。 二、配置方法 需要先導入Jquery庫,然後導入Va ...
  • 昨天咱們說了封裝ajax,今天咱們說一下 自己創建一個建議的node伺服器: 話不多說直接上代碼: //對URL 解析為對象//1.導入模塊 URl模塊 好啦!大概就是這個樣子! 有不懂得 留言問我哦! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...