WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

canvas刮图效果 html+css+js

更新时间:2021-04-10 10:18 作者:北极光之夜点击:
效果(完整代码在底部):

素材图1:
素材图2:
实现(原理是比较简单的):
 
1.定义标签:
 
<canvas id="canvas"></canvas>
 
2.canvas基本css样式:
 
canvas{
            background-image: url(img/对比图/1.1.png);
            background-size: cover;
        }
 

 
background-image: url(img/对比图/1.1.png); 给个真人钢铁侠背景图。
background-size: cover; 背景图像完全覆盖背景区域。
 
3. 开始js部分,获取画布,设置基本大小:
 
        var canvas = document.querySelector("#canvas");
        var ctx = canvas.getContext("2d");
        canvas.width = 243;
        canvas.height = 528;
 

 
4.绘制一张漫画图片覆盖在真人钢铁侠上面:
 
        var img = new Image();
        img.src = "img/对比图/1.png";
        img.onload=function(){
            ctx.drawImage(img,0,0,243,528);
        }
 

 
5.定义变量 isDown,判断鼠标是否是一直按压着:
 
       var isDown = false;
       canvas.addEventListener('mousedown',function(){
           isDown = true;
       })
       canvas.addEventListener('mouseup',function(){
           isDown = false;
       })
 

 
6.实现效果:
 
canvas.addEventListener('mousemove',function(event){
            if(isDown){
            //获取鼠标位置
             let x = event.offsetX;
             let y = event.offsetY;
             //开始绘制路径,绘制小圆球
             ctx.beginPath();
             ctx.fillStyle = "white";
             ctx.arc(x,y,20,Math.PI*2,false);
             ctx.fill();
             ctx.closePath();
             /*在源图像外显示目标图像。只有源图像外的目标
             图像部分会被显示,源图像是透明的。*/
             ctx.globalCompositeOperation = 'destination-out';
            }
        })
 
完整代码:
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body{
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        canvas{
            background-image: url(img/对比图/1.1.png);
            background-size: cover;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script>
        var canvas = document.querySelector("#canvas");
        var ctx = canvas.getContext("2d");
        canvas.width = 243;
        canvas.height = 528;
 
        var img = new Image();
        img.src = "img/对比图/1.png";
        img.onload=function(){
            ctx.drawImage(img,0,0,243,528);
        }
         
        
 
        canvas.addEventListener('mousemove',function(event){
            if(isDown){
             let x = event.offsetX;
             let y = event.offsetY;
             ctx.beginPath();
             ctx.fillStyle = "white";
             ctx.arc(x,y,20,Math.PI*2,false);
             ctx.fill();
             ctx.closePath();
             ctx.globalCompositeOperation = 'destination-out';
            }
 
        })
        var isDown = false;
       canvas.addEventListener('mousedown',function(){
           isDown = true;
       })
       canvas.addEventListener('mouseup',function(){
           isDown = false;
       })
    </script>
</body>
</html>
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容