HTML5 canvas例子-抽奖轮盘-时钟

画布

标签:<canvas>,用于绘制图像(通过脚本,通常是 JavaScript)。

例子:抽奖轮盘

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        #cans{
            background-color: gray;
        }
    </style>
    <script>
        window.onload = function (){
            var cans = document.getElementById("cans");
            var pen = cans.getContext("2d");
            var arrColor = ["#7ACC5D", "#B5CC3E", "#CC9ABE", "#4E9ACC", "#CC4D56", "#AF1ECC", "#6C44CC", "#CC8939"];
            var arrText = ["0元","0.5元","1元","5元","10元","20元","50元","100元"];
            pen.translate(250,250);
            var flag = 0;
            var po = 50 + parseInt(Math.random()*30);
            var run = window.setInterval(function(){
                if (po <= 0.2){
                    window.clearInterval(run);
                    pen.beginPath();
                    pen.textAlign = "center";
                    pen.textBaseline = "middle";
                    pen.font = "20px 微软雅黑";
                    pen.fillText(arrText[arrText.length - Math.ceil(flag/45)],0,0);
                }else{
                    if (flag >= 360){
                        flag = 0;
                    }
                    po *= 0.95;
                    flag += po;
                    pen.clearRect(-250,-250,500,500);
                    pen.save();
                    pen.beginPath();
                    pen.lineWidth = 3;
                    pen.moveTo(170,0);
                    pen.lineTo(200,0);
                    pen.stroke();
                    pen.rotate(flag*Math.PI/180);

                    //转盘
                    (function(){
                        for (var i = 1;i <= 8 ;i++){
                            pen.beginPath();
                            pen.moveTo(0,0);
                            pen.lineWidth = 3;
                            pen.fillStyle = arrColor[i-1];
                            pen.arc(0,0,150,Math.PI*2/360*45*[i-1],Math.PI*2/360*45*i,false);
                            pen.closePath();
                            pen.stroke();
                            pen.fill();
                        }
                    }());

                    //中心圆
                    pen.beginPath();
                    pen.fillStyle = "white";
                    pen.arc(0,0,50,0,Math.PI*2);
                    pen.stroke();
                    pen.fill();

                        //文字
                    (function(){
                        for (var i = 0;i < arrText.length;i++){
                            pen.beginPath();
                            pen.save();
                            pen.font = "16px 微软雅黑";
                            pen.rotate((i*45+28)*Math.PI/180);
                            pen.fillText(arrText[i],70,0);
                            pen.restore();
                        }
                    }());
                pen.restore()
                }
            },50)
        }
    </script>
</head>
<body>
    <canvas id="cans" width="500" height="500"></canvas>
</body>
</html>

例子:时钟

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        window.onload = function (){
                var vas = document.getElementById("vas");
                var pen = vas.getContext("2d");
            window.setInterval(function(){
                //外圆
                pen.clearRect(0,0,500,500);
                pen.beginPath();
                pen.strokeStyle = "black";
                pen.lineWidth = 2;
                pen.fillStyle = "white";
                var originX = 250;
                var originY = 250;
                var radius = 120;
                pen.arc(originX,originY,radius,0,Math.PI*2);
                pen.stroke();
                pen.fill();

                var time = new Date();
                var hour = time.getHours()*30 + time.getMinutes()/2 - 90;
                var min = time.getMinutes()*6 - 90;
                var sec = time.getSeconds()*6 - 90;
                //刻度
                (function (){
                    pen.shadowColor = "transparent";
                    for (var i = 1; i <= 60;i++){
                        pen.beginPath();
                        var ang = i*6;
                        var wid = 2;
                        var rad = radius - 6;
                        if (i % 5 == 0 ){
                            rad = radius - 10;
                            wid = 3;
                        }
                        pen.lineWidth = wid;
                        pen.moveTo(Math.cos(ang*Math.PI*2/360)*radius + originX,Math.sin(ang*Math.PI*2/360)*radius + originY);
                        pen.lineTo(Math.cos(ang*Math.PI*2/360)*rad + originX,Math.sin(ang*Math.PI*2/360)*rad + originY);
                        pen.stroke()
                    }
                })();
                point(originX,originY,56,"red",4,hour,pen);
                point(originX,originY,76,"blue",3,min,pen);
                point(originX,originY,96,"yellow",2,sec,pen);
                //中心
                pen.beginPath();
                pen.fillStyle = "black";
                pen.arc(originX,originY,5,0,Math.PI*2);
                pen.stroke();
                pen.fill();
            },1000);

            //指针
            function point(originX,originY,r,color,width,ang,pen){
                pen.beginPath();
                ang = ang*Math.PI*2/360;
                pen.lineWidth = width;
                pen.shadowColor = "black";
                pen.shadowOffsetX = 3;
                pen.shadowOffsetY = 3;
                pen.strokeStyle = color;
                pen.moveTo(originX,originY);
                pen.lineTo(Math.cos(ang)*r + originX,Math.sin(ang)*r + originY);
                pen.stroke();
            }
        }
    </script>
</head>
<body>
    <canvas id = "vas" width=500 height=500 style="background-color: antiquewhite"></canvas>
</body>
</html>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值