0-9 倒计时 8x8 点阵 实现

由于喜欢接触单片机之类的,所以对8x8 的点阵还是比较着迷,但是至今都还没有完整的实现这个硬件上的功能(因为自己有点菜),所以就在HTML 上先实现这个功能,不过这个功能看起来还是有点垃圾的,没什么用,但是还是先写成博客记录下来,等到哪天突然又有时间了, 就好好完善一下!

#老规矩 先贴上代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>0-9 倒计时 8x8 点阵 实现</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.slim.min.js"></script>
    <style>
        /*不允许页面选中*/
        body {
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }

        /*设置表格的大小*/
        table {
            width: 500px;
            height: 500px;
        }
    </style>
</head>
<body onload="genTable()">
<table id="table" border="1em" cellspacing="0" cellpadding="0"></table>
<div>
    <input type="number" placeholder="请输入0-9的数字" onchange="initTime(this)">
    <button onclick="TimeOut()"> 开始倒计时</button>
</div>
</body>
<script>
    var tArray = new Array(),
        color = "D25FFF",//构建时td显示的颜色
        row = 8,//构建时创建的多少行
        col = 8,//构建时创建多少列
        timeOut = 9;//倒计时的时间
    var data = [
        ["00111100", "01000010", "01000010", "01000010", "01000010", "01000010", "01000010", "00111100",]//0
        , ["00011000", "00111000", "00011000", "00011000", "00011000", "00011000", "00011000", "00111100"]//1
        , ["00111100", "00000100", "00000100", "00000100", "00111100", "00100000", "00100000", "00111100"]//2
        , ["00111100", "00000100", "00000100", "00000100", "00111100", "00000100", "00000100", "00111100"]//3
        , ["00000000", "01001000", "01001000", "01001000", "01111110", "00001000", "00001000", "00000000"]//4
        , ["00111100", "00100000", "00100000", "00111100", "00000100", "00000100", "00000100", "00111100"]//5
        , ["00111110", "00100000", "00100000", "00100000", "00111110", "00100010", "00100010", "00111110"]//6
        , ["00111100", "00000100", "00000100", "00000100", "00000100", "00000100", "00000100", "00000100"]//7
        , ["01111110", "01000010", "01000010", "01111110", "01000010", "01000010", "01000010", "01111110"]//8
        , ["01111110", "01000010", "01000010", "01111110", "00000010", "00000010", "00000010", "01111110"]//9
    ];

    /**
     * 初始化倒计时的时间
     * @author Lengff
     */
    function initTime(input) {
        var value = input.value;
        if (value > 9 || value < 0) {
            alert("输入不合法!");
            input.value = '';
        } else {
            timeOut = value;
        }
    }

    /**
     * 构建表格
     * @author Lengff
     */
    function genTable() {
        $("#table").html('');
        var html = '', tr = "<tr>", trr = "</trr>", td = "<td>", tdd = "</td>";
        for (var i = 0; i < row; i++) {
            html += tr;
            for (var j = 0; j < col; j++) {
                html += td + "&nbsp;" + tdd;
            }
            html += trr;
        }
        $("#table").append(html);
        Coloring();
    }

    /**
     * 上色
     * @author Lengff
     */
    function Coloring() {
        var trs = $("table").find('tr');
        for (var i = 0; i < trs.length; i++) {
            tArray[i] = new Array();
            var tr = $(trs[i]).find('td');
            for (var j = 0; j < tr.length; j++) {
                tArray[i][j] = $(tr[j]);
                tArray[i][j].attr('bgcolor', color);
            }
        }
    }

    /**
     * 变成数字
     * @author Lengff
     */
    function changeNum(num) {
        color = randomHexColor();
        for (var i = 0; i < tArray.length; i++) {
            for (var j = 0; j < tArray[i].length; j++) {
                if (num[i][j] == 1) {
                    tArray[i][j].attr('bgcolor', color);
                } else {
                    tArray[i][j].attr('bgcolor', "#ffffff");
                }
            }
        }
    }

    /**
     * 倒计时开始
     * @author Lengff
     */
    function TimeOut() {
        //只要倒计时未结束就接着倒计时
        if (timeOut != -1) {
            setTimeout(function () {
                changeNum(data[timeOut]);
                timeOut--;
                TimeOut();
            }, 1000);
        } else {
            //如果倒计时结束了,就重置计时器
            timeOut = 9;
        }
    }

    /**
     * 随机生成十六进制颜色
     */
    function randomHexColor() {
        //生成ffffff以内16进制数
        var hex = Math.floor(Math.random() * 16777216).toString(16);
        //while循环判断hex位数,少于6位前面加0凑够6位
        while (hex.length < 6) {
            hex = '0' + hex;
        }
        //返回‘#'开头16进制颜色
        return '#' + hex;
    }


</script>
</html>

#讲一下原理,

其实原理很简单, 就是一个table 然后就给table 渲染一下不同的单元格,实现一个动态的显示效果

#最后看一下效果图点我查看

是不是觉得很丑,其实我也觉得很丑,其实这个是我用另外一个差不多的网页画出来的点我查看

画的很随意,所以就比较丑

猜你喜欢

转载自blog.csdn.net/qq_31878883/article/details/84031040