zoukankan      html  css  js  c++  java
  • 利用js键盘事件制作会移动效果

    会移动的方块

    描述 按键盘上的方向键方块会移动,按住alt键和方向键进行大幅度移动

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>会移动的方块(按方向键或alt加方向键)</title>
        <style>
            * {margin: 0;padding: 0;}
            div { 200px;height: 200px;position: absolute;background:cyan;}
        </style>
        <script>
        /*
            分析
            左 对应的键码keyCode:37
            上 对应的键码keyCode:38
            右 对应的键码keyCode:39
            下 对应的键码keyCode:40
    
    
         */
            window.onload = function(){
                var oDiv = document.getElementById('div');
                window.onkeydown = function(ev){
                    var e = ev || window.event;
                    //alert(e.keyCode);//查看键码
                    var speed = 10; //每次变化的数
                    //判断是否按下alt键,如果按下每次增加的数度翻十倍
                    if(e.altKey){
                        speed *= 10;
                    }
                    switch(e.keyCode){
                        //
                        case 37:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式减10px
                            oDiv.style.left = current - speed + 'px';
                            break;
                        //
                        case 38:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式减10px
                            oDiv.style.top = current - speed + 'px';
                            break;
                        //
                        case 39:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式加10px
                            oDiv.style.left = current + speed + 'px';
                            break;
                        //
                        case 40:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式加10px
                            oDiv.style.top = current + speed + 'px';
                            break;
                    }
                }
    
            }
    
            /*------封装获取当前有效样式的函数---------*/
                function getStyle(node, styleType){
                    return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
                }
    
    
            /*------封装获取当前有效样式的函数end---------*/
    
        </script>
    </head>
    <body>
        <div id="div"></div>
    </body>
    </html>

    浏览器效果:

    才此基础上插入一个背景图加以修饰

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>会移动的凤凰(按方向键或alt加方向键)</title>
        <style>
            * {margin: 0;padding: 0;}
            div { 293px;height: 220px;position: absolute;background:url(fenghuang1.gif);}
        </style>
        <script>
        /*
            分析
            左 对应的键码keyCode:37
            上 对应的键码keyCode:38
            右 对应的键码keyCode:39
            下 对应的键码keyCode:40
    
    
         */
            window.onload = function(){
                var oDiv = document.getElementById('div');
                window.onkeydown = function(ev){
                    var e = ev || window.event;
                    //alert(e.keyCode);//查看键码
                    var speed = 10; //每次变化的数
                    //判断是否按下alt键,如果按下每次增加的数度翻十倍
                    if(e.altKey){
                        speed *= 10;
                    }
                    switch(e.keyCode){
                        //
                        case 37:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式减10px
                            oDiv.style.left = current - speed + 'px';
                            //按下  左时 div第transform 都等于 逆时针180度
                            oDiv.style.transform = 'rotate(-180deg)';
                            break;
                        //
                        case 38:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式减10px
                            oDiv.style.top = current - speed + 'px';
                            //按下  上时 div第transform 都等于 逆时针90度
                            oDiv.style.transform = 'rotate(-90deg)';
                            break;
                        //
                        case 39:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'left'));
                            //每次有效样式加10px
                            oDiv.style.left = current + speed + 'px';
                            //按下  右时 div第transform 都等于 逆时针0度
                            oDiv.style.transform = 'rotate(0deg)';
                            break;
                        //
                        case 40:     
                            //获取当前的有效值,获取的值有单位px 用parseInt转换成整型(去掉单位)
                            var current = parseInt(getStyle(oDiv, 'top'));
                            //每次有效样式加10px
                            oDiv.style.top = current + speed + 'px';
                            //按下  右时 div第transform 都等于 顺时针90度
                            oDiv.style.transform = 'rotate(90deg)';
                            break;
                    }
                }
    
            }
    
            /*------封装获取当前有效样式的函数---------*/
                function getStyle(node, styleType){
                    return node.currentStyle ? node.currentStyle[styleType] : getComputedStyle(node)[styleType];
                }
    
    
            /*------封装获取当前有效样式的函数end---------*/
    
        </script>
    </head>
    <body>
        <div id="div"></div>
    </body>
    </html>

    浏览器效果:

     

    使用到的图片:

  • 相关阅读:
    javascript调用applet
    mysql“Access denied for user 'root'@'localhost'”问题的解决
    VS2010 加载Dll文件
    预处理符号
    什么是lib文件,lib和dll的关系如何[转]
    git常用命令
    VC项目配置基础[转]
    [转]Linux ftp命令的使用方法
    [转]JavaScript创建Applet 标签的属性介绍 以及 Applet调用JavaScript
    When you publish a workflow in Microsoft Dynamics CRM 4.0 after you install Update Rollup 2, you receive Error message
  • 原文地址:https://www.cnblogs.com/taohuaya/p/9594040.html
Copyright © 2011-2022 走看看