乐趣区

H5刮刮卡效果

效果图:

核心就是使用 ctx.globalCompositeOperation = ‘destination-out’;

全部代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
    .ggk{
        width:200px;
        height: 100px;
        border:1px solid #ccc;
        margin:0 auto;
        color:red;
        position: relative;
    }
    .ggk span{
        position: absolute;
        width:100%;
        height: 100%;
        text-align: center;
        font-size:50px;
        line-height: 100px;
    }
    canvas{
        position: absolute;
        left:0;
        top:0;
    }
    </style>
</head>
<body>

<div class='ggk'>
    <span id='span'>200 元 </span>
    <canvas id='canvas'></canvas>
</div>

<script type="text/javascript">
var canvas = document.getElementById("canvas");
init();

function init(){
    canvas.width = 200;
    canvas.height = 100;
    var ctx = canvas.getContext("2d");
    productResult();
    drawCover(ctx);
    drawStroke(ctx);

}
// 往 span 内填充内容
function productResult(){var span = document.getElementById("span");
    var arr = ['100 元','100 元','200 元','300 元','谢谢','谢谢','谢谢','谢谢','谢谢','谢谢'];
    var text = arr[randomInt(0,arr.length-1)];
    span.innerHTML = text;
}    
// 产生随机值
function randomInt(from,to){return parseInt( Math.random()*(to-from+1)+from );
}
// 绘制覆盖层 ==》灰色
function drawCover(ctx){ctx.save();
    ctx.fillStyle = "rgb(100,100,100)";
    ctx.fillRect(0,0,200,100);
    ctx.restore();}
function  drawStroke(ctx){canvas.onmousedown = function(e){

        var downX = e.offsetX;
        var downY = e.offsetY;
        ctx.beginPath();
        ctx.globalCompositeOperation = 'destination-out';
        ctx.lineWidth = 10;
        ctx.moveTo(downX,downY);

        canvas.onmousemove = function(e){
            var x = e.offsetX;
            var y = e.offsetY;
            ctx.lineTo(x,y);
            ctx.stroke();}

    }
    canvas.onmouseup = function(){canvas.onmousemove = null;}

}

</script>
</body>
</html>

每日分享效果附带视频:https://www.3mooc.com/front/c…

退出移动版