字母打字练习--键盘事件onkeydown--keycode - css,效果如图所示


html

<html>

<head>
    <meta charset="utf-8">
    <title>打字游戏</title>
    <!--引入animate.css动画库-->
    <link rel="stylesheet" href="animate.css">
    <style>
        body {
            margin: 0;
            /*开启弹性布局,并让弹性布局中的子元素
                水平居中对齐,垂直居中对齐*/
            display: flex;
            justify-content: center;
            align-items: center;
            /*文字居中*/
            text-align: center;
            /*设置背景颜色的经像渐变*/
            background: radial-gradient(circle, #444, #111, #000);
        }

        #char {
            font-size: 400px;
            color: lightgreen;
            /*设置文字阴影*/
            /*text-shadow: 水平位置 垂直位置 模糊距离 阴影颜色*/
            /*位置可以为负值*/
            text-shadow: 0 0 50px #666;
        }

        #result {
            font-size: 20px;
            color: #888;
        }

        /*找到id为char及类名为error的div元素*/
        #char.error {
            color: red;

        }
    </style>
</head>

<body>
    <mian>
        <div id="char">A</div>
        <div id="result">请在按键上按下屏幕上显示的字母</div>
    </mian>
</body>

</html>
<script src="common.js"></script>
<script>
    // 按键正确: "animated zoomIn";
    // 按键错误: "animated shake error";
    //页面加载  char中随机显示 A--Z之间的任意一个字符   65 --- 90
    //在页面中显示A--Z之间的任意一个字符
    //初始化页面显示随机字母

    //1给页面初始化随机大写字母,在char中显示

    //2.给document注册一个onkeydowng事件
    //3.获取char的innderHTML值 cVal;
    //4.获取对应的按键的键码值
    //5.根据键码值得一个字符  String.fromCharCode(键码值);
    //6.用字符与cVal进行判断,如果相等表示输入正确,否则表示输入错误
    //7.正确,难char设置正确class动画效果
    //立即给char切换到下一个字母
    //统计正确个数
    //统计正确率
    //8.错误,难char设置错误class动画效果
    //统计错误个数
    //统计正确率
    function toPercent(point) {
        var str = Number(point * 100).toFixed(1);
        str += "%";
        return str;
    }

    let $letter = $('#char');
    let $content = $('#result');
    let rigCount = 0;
    let errCount = 0;

    $letter.innerHTML = String.fromCharCode(getRandom(90, 65));
    document.onkeydown = function (e) {
        e = e || window.event;
        var code = e.keyCode || e.which
        let key = String.fromCharCode(e.keyCode)
        //   console.log(key);
        //   console.log($letter.innerHTML)
        if (key == $letter.innerHTML) {
            $letter.innerHTML = String.fromCharCode(getRandom(90, 65));
            $letter.className = 'animated zoomIn';
            rigCount++;
        }
        else {
            $letter.className = 'animated shake error';
            errCount++;
            let count = rigCount / (rigCount + errCount);
            
            $content.innerHTML = "答对" + errCount + "道,答错" + rigCount + "道,正确率" + toPercent(count);
        }
    }

</script>
posted on 2019-03-06 14:28  风往南  阅读(270)  评论(0编辑  收藏  举报