JavaScript实现前端飞机大战小游戏

 更新时间:2022年5月8日 23:27  点击:355 作者:敢跟头像对视三秒吗?

本文实例为大家分享了JavaScript实现前端飞机大战的具体代码,供大家参考,具体内容如下

html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>飞机大战</title>
        <link rel="stylesheet" type="text/css" href="css/commen.css" />
        <link rel="stylesheet" type="text/css" href="css/main.css" />
        <script src="js/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="js/main.js" type="text/javascript" charset="utf-8"></script>
        
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    </head>
    <body>
        <div id="stage">
            <div class="bg1"></div>
            <div class="bg2"></div>
            <div class="plain"></div>
            <div class="enemy enemy1"></div>
            <div class="enemy enemy2"></div>
            <div class="enemy enemy3"></div>
            <div class="enemy enemy4"></div>
            <!-- <div class="bullet"></div> -->
            
            <div class="func">功能切换</div>
            <div class="func" style="left: 50px;">背景切换</div>
            <audio id="mp3bg" src="music/background.mp3" autoplay loop>
                当前浏览器不支持audio
            </audio>
            <audio id="mp3shoot" src="music/shoot.mp3" >
                当前浏览器不支持audio
            </audio>
            <audio id="mp3destroy" src="./music/destoryed.mp3" >
                当前浏览器不支持audio
            </audio>
            <button id="buttonmusic" type="button" style="position: absolute;right: 0;bottom: 0;">音乐</button>
        </div>
    
    </body>
</html>

js:

// var pdirection
//  var plain

// pdirection = [0, 0, 0, 0, 0];
//  var bulletw = 50;
// var bulleth = 65;
// var stage
// var move = 1

// var timerkiss
$(function() {
    //这里写代码的时候是可以控制所有htmldom节点的
    //dom

    var pdirection = [0, 0, 0, 0, 0];    
    
    //子弹的宽高
    var bulletw = 50;
    var bulleth = 65;
    //运动距离
    var move = 1
    
    
    // var timerkiss
    var stage = document.getElementById("stage"); //获取舞台节点
    var bg1 = stage.getElementsByClassName("bg1")[0]; //获取背景图片
    // console.log(bg1)  //检查是否捕获bg1
    var bg2 = stage.getElementsByClassName("bg2")[0]; //获取背景图片
    var topval = -200;
    var topval2 = -968;
    var k = 0;
    //玩家飞机对象
    var plain = stage.getElementsByClassName("plain")[0];
    //定义方向的变量数组,依次表示 上 右 下 左 空格用1表示按下,用0 表示未按下
    // pdirection = [0, 0, 0, 0, 0];

    //    功能切换
    var funcsw=true;//true表示打开键盘 ,关闭鼠标,false表示打开鼠标,关闭键盘
    
    //炮弹对象,宽高速度
    var bullet = stage.getElementsByClassName("bullet")[0];
    // var bulletw = 50;
    // var bulleth = 65;
    var bullets = 10;
    // bg1.style.cssText="top: -30px;"
    var t1 = setInterval(function() {
        k += 1;
        if (k == 768) {
            topval = -968;


        } else if (k == 768 * 2) {
            topval2 = -968;
            k = 0;
        }
        // console.log("ddd")
        // console.log(bg1.style.cssText)
        // bg1.scrollTop=bg1.scrollTop+10;
        $(bg1).css({
            "top": topval
        });
        $(bg2).css({
            "top": topval2
        });


        // bg1.style.cssText="top: "+topval+"px";
        topval++;
        // bg2.style.cssText="top: "+topval2+"px";
        topval2++;
        //topval++背景向下移动  

    }, 3);

    // t1.clearInterval();  //时钟停止


    // 第二章图片
    // var stage=document.getElementById("stage"); //获取舞台节点

    // // console.log(bg1)  //检查是否捕获bg1

    // // bg1.style.cssText="top: -30px;"
    // var t1=setInterval(function(){
    //     // console.log("ddd")
    //     // console.log(bg1.style.cssText)
    //     // bg1.scrollTop=bg1.scrollTop+10;
    //     bg2.style.cssText="top: "+topval2+"px";
    //     topval2+=1
    //     //topval++背景向下移动  

    // },70);
    // console.log(plain)
    // var move = 1


    //键盘的监控事件
    document.onkeydown = function(e) {
        // console.log(e)
        //向上运动
        // console.log("444")
        if (e.key == "w") {
            //cons
            //console.log("555")
            pdirection[0] = 1;
            //console.log(pdirection[0]);
            // console.log(parseFloat($(plain).css("top")))
            //if(parseFloat($(plain).css("top"))>=5)
            // plain.style.top.CSSValue=plain.style.top+10
            //    $(plain).css({"top":parseFloat($(plain).css("top"))-move});
            // move++

        } else if (e.key == "s") { //向下运动
            pdirection[2] = 1;
            // console.log(parseFloat($(plain).css("top")))
            //if(parseFloat($(plain).css("top"))<=513)
            // plain.style.top.CSSValue=plain.style.top+10
            //    $(plain).css({"top":parseFloat($(plain).css("top"))+move});
            // move++

        } else if (e.key == "a") { //向左运动
            pdirection[3] = 1;
            // console.log(parseFloat($(plain).css("top")))

            // plain.style.top.CSSValue=plain.style.top+10
            //$(plain).css({"left":parseFloat($(plain).css("left"))-move});
            // move++

        } else if (e.key == "d") { //向右运动
            pdirection[1] = 1;
            // console.log(parseFloat($(plain).css("top")))

            // plain.style.top.CSSValue=plain.style.top+10
            //$(plain).css({"left":parseFloat($(plain).css("left"))+move});
            // move++

        }
        //else if(e.key==" "){  //炮弹向上运动
        //pdirection[4]=1;
        // console.log(parseFloat($(plain).css("top")))
        // var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2;
        // console.log($(plain).css("left"))
        //console.log(parseFloat($(plain).css("left")))
        // console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height")));
        //var bullety=parseFloat($(plain).css("top"))-bulleth;

        // plain.style.top.CSSValue=plain.style.top+10
        // $(plain).css({"left":parseFloat($(plain).css("left"))+move});
        // move++
        // $("<div class=\"bullet\"></div>")   转义方法
        //$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage);


        //};

    }
    //炮弹单独
    document.onkeypress = function(e) {

        if (e.key == " ") { //炮弹向上运动
            shoot();
        };

    }


    //键盘按键抬起来
    document.onkeyup = function(e) {
        if (e.key == "w") {
            //cons
            //console.log("555")
            pdirection[0] = 0;


        } else if (e.key == "s") { //向下运动
            pdirection[2] = 0;


        } else if (e.key == "a") { //向左运动
            pdirection[3] = 0;


        } else if (e.key == "d") { //向右运动
            pdirection[1] = 0;


        } else if (e.key == " ") { //炮弹向上运动
            pdirection[4] = 0;


        };
        // console.log(pdirection)

    };

    //定义飞机x轴y轴的坐标
        // var plainx=e.clientX;
        // var plainy=e.clientY
    //鼠标移动事件
    stage.onmousemove=function(e){
        if(funcsw) return;  //关闭鼠标功能
        var plainX=e.clientX-parseFloat($(stage).css("margin-left"));
        var plainY=e.clientY
        
        //console.log(e)
        //如有必要需要去掉子事件。此处并不需要
        // e.defaultPrevented;
        // e.getPreventDefault()//取消事件默认动作
        // console.log(e.path[1].id);
        // ($(plain[0]).css("top"))=e.clientX+"px"
         $(plain).css({"left":plainX-parseFloat($(plain).width()/2),"top":plainY-parseFloat($(plain).height()/2)});
         //$(plain).css({"top":plainY+parseFloat($(plain).css("height")/2)});
         // $(plain).css({"top":plainy});
         // console.log(e.clientX)
         // console.log(e.clientY)
         // console.log($(plain).css("top"))
    }


    //绑定功能切换键
    $(".func").click(function(){
        if($(this).html()=="功能切换"){
            if(funcsw){  
                funcsw=false;//关闭键盘 打开鼠标
                clearInterval(timerkey);
                timerfire=setInterval(shoot,170);
                
            }else{ 
                funcsw=true; //关闭鼠标 ,打开键盘
                clearInterval(timerfire);
                timerkey=monitorkey();
                
            }
        };
        
        
    });

    //控制敌机的时钟
    var enemy = document.getElementsByClassName("enemy");
    setInterval(function() {
        for (var i = 0; i < enemy.length; i++) {
            if ($(enemy[i]).attr("class") == "enemy enemy1") {
                $(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 1);

            } else if ($(enemy[i]).attr("class") == "enemy enemy2") {
                $(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 2);

            } else if ($(enemy[i]).attr("class") == "enemy enemy3") {
                $(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 3);

            } else if ($(enemy[i]).attr("class") == "enemy enemy4") {
                $(enemy[i]).css("top", parseFloat($(enemy[i]).css("top")) + 4);

            }


        }

    }, 10);
    //随机产生敌机
    // setInterval(function(){
    //     var num=parseInt(Math.random()*4)+1;
    //     var rndwidth_stage=parseInt(Math.random()*parseInt($(stage).width()-45));
    //     $("<div class=\"enemy enemy"+num+"\"></div>").css({"left":rndwidth_stage}).appendTo("#stage")

    // },1500);
    //数组写法
    setInterval(function() {
        var num = parseInt(Math.random() * 4) + 1;
        var enemyW = [50, 67, 67, 67];
        var rndwidth_stage = parseInt(Math.random() * $(stage)
    .width()); //展示三木运算符(rndwidth_stage-enemyW[num-1]
        rndwidth_stage = rndwidth_stage > enemyW[num - 1] ? rndwidth_stage - enemyW[num - 1] :
            rndwidth_stage;
        $("<div class=\"enemy enemy" + num + "\"></div>").css({
            "left": rndwidth_stage
        }).appendTo("#stage")

    }, 1000);

    //控制子弹的动画时间控件
    setInterval(function() {
        if ($(".bullet").length == 0) return;

        //设置好子弹移出屏幕后,移除子弹节点

        // $(".bullet").css({"top":parseFloat($(".bullet").css("top"))-10})
        // // console.log($(this).css("top"))
        // console.log(parseFloat($(".bullet").css("top")));
        //var bulltop=parseFloat($(".bullet[i]").css("top"));

        //$(".bullet").css({"top":(bulltop-10)+"px"});

        var bullet = $(".bullet");
        // console.log(bullet)  
        // for(var i=0;i<bullet.length;i++){
        //     var bulltop=parseFloat($(bullet[i]).css("top"));
        //     $(bullet[i]).css({"top":(bulltop-10)+"px"});

        // }

        for (i = 0; i < bullet.length; i++) {
            var tmp_bullet = parseFloat($(bullet[i]).css("top"));
            // console.log(tmp_bullet);
            if (tmp_bullet < 0) {
                $(bullet[i]).remove();

            } else {

                var bulltop = parseFloat($(bullet[i]).css("top"));
                $(bullet[i]).css({
                    "top": (bulltop - 10) + "px"
                });

            }


        };


    }, bullets);
    //单独监控子弹
    setInterval(function() {
        // var bullet=document.getElementsByClassName("bullet");
        //两种写法都可以
        var bullet = $(".bullet");

        // for(i=0;i<bullet.length;i++){
        //     var tmp_bullet=parseFloat($(bullet[i]).css("top"));
        //     // console.log(tmp_bullet);
        //     if(tmp_bullet<0){
        //         $(bullet[i]).remove();

        //     };


        // };


    }, 400);

    //离开舞台的还记移除dom节点
    setInterval(function() {


        for (i = 0; i < enemy.length; i++) {
            var tmp_enemy = parseFloat($(enemy[i]).css("top"));
            var tmp_stage = $(stage).height();
            // console.log(tmp_enemy); 
            // console.log(typeof($(tmp_stage).height()));
            if (tmp_enemy > tmp_stage) {
                $(enemy[i]).remove();
                // console.log("移除成功");

            };

        };
    }, 500);

    //时钟控件监控数组pdirection的值
    var timerkey=monitorkey();

//时钟控件表示每个多少时间发射子弹
//第一种方法  键盘模拟事件
// setInterval(function(){
//     var e=jQuery.Event("keypress");
//     e.key=" "
//     $(document).trigger(e);
    
// },500)

//第二种方法  直接调用函数
    function shoot(){
        $("#mp3shoot")[0].currentTime=0;
        $("#mp3shoot")[0].play();
        pdirection[4] = 1;
        // console.log(parseFloat($(plain).css("top")))
        // var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2;
        // console.log($(plain).css("left"))
        //console.log(parseFloat($(plain).css("left")))
        // console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height")));
        //var bullety=parseFloat($(plain).css("top"))-bulleth;
        
        // plain.style.top.CSSValue=plain.style.top+10
        // $(plain).css({"left":parseFloat($(plain).css("left"))+move});
        // move++
        // $("<div class=\"bullet\"></div>")   转义方法
        //$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage);
        //console.log(pdirection[4]);
        var bulletx = parseFloat($(plain).css("left")) + $(plain).width() / 2 - bulletw / 2;
        // console.log($(plain).css("left"))
        // console.log(parseFloat($(plain).css("left")))
        // console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height")));
        var bullety = parseFloat($(plain).css("top")) - bulleth;
        
        // plain.style.top.CSSValue=plain.style.top+10
        // $(plain).css({"left":parseFloat($(plain).css("left"))+move});
        // move++
        // $("<div class=\"bullet\"></div>")   转义方法
        $("<div class='bullet'></div>").css({
            "left": bulletx,
            "top": bullety
        }).appendTo(stage);
        
        
    }
    
    //总结模型
    // function kissAB(A,B){
    //     var iskiss=false;
    //     for(var i=0;i<A.length;i++){
    //         for(var j=0;j<B.length;j++){
    //             // var a=$(A[i]).height()/2+parseFloat($(A[i]).css("top"))-$(B[j]).height()/2-parseFloat($(B[j]).css("top"));
    //             // var b=$(B[j]).width()/2+parseFloat($(B[j]).css("left"))-$(A[i]).width()/2-parseFloat($(A[i]).css("left"));
    //             // //console.log(a)
    //             // var c=$(A[i]).height()/2+$(B[j]).width()/2
    //             // console.log(b);
                
    //             // if(a*a+b*b<c*c){
    //             //     // $(B[j]).remove();
    //             //     // $(A[i]).remove();
    //             //     iskiss=true;
    //             //     break;
    //             // }
                
                
    //         }
            
            
            
    //     }

    // }
    
    //调用模拟键盘函数
        //var timerfire=setInterval(shoot,500);
        //定义变量存储子弹发射的动画
    var timerfire;
    
        //检测是否碰撞

    function kissAB(A,B){
                var iskiss=false;
                    var a=$(A).height()/2+parseFloat($(A).css("top"))-$(B).height()/2-parseFloat($(B).css("top"));
                    var b=$(B).width()/2+parseFloat($(B).css("left"))-$(A).width()/2-parseFloat($(A).css("left"));
                    //console.log(a)
                    var c=$(A).height()/2+$(B).width()/2-10;
                    //console.log(b);
                    if(a*a+b*b<c*c){
                        // $(B[j]).remove();
                        // $(A[i]).remove();
                        iskiss=true;    
                
                    }
            
            return iskiss;
            
            
        }    
    
    var timerkiss=monitorkiss();
    
    function monitorkiss(){
        
            //获取子弹
            //检测子弹与敌机是否碰撞
        return setInterval(function(){
            
            var bullets=$(".bullet");
            
            var enemys=$(".enemy");
            for(var i=0;i<bullets.length;i++){
                for(var j=0;j<enemys.length;j++){
                    // var a=$(bullets[i]).height()/2+parseFloat($(bullets[i]).css("top"))-$(enemys[j]).height()/2-parseFloat($(enemys[j]).css("top"));
                    // var b=$(enemys[j]).width()/2+parseFloat($(enemys[j]).css("left"))-$(bullets[i]).width()/2-parseFloat($(bullets[i]).css("left"));
                    // //console.log(a)
                    // var c=$(bullets[i]).height()/2+$(enemys[j]).width()/2
                    // console.log(b);
                    // if(a*a+b*b<c*c){
                    //     $(enemys[j]).remove();
                    //     $(bullets[i]).remove();
                    //     break;
                    //console.log("aaa")
                    // }
                    if (kissAB(bullets[i],enemys[j])){
                        //console.log("ttt")
                        $("#mp3destroy")[0].play();
                        $(enemys[j]).remove();
                        $(bullets[i]).remove();
                        
                         break;
                    }
                }
            }
            //检测玩家与敌机是否碰撞
            for(var j=0;j<enemys.length;j++){
                if(kissAB(plain,enemys[j])){
                    alert("game over");
                    gameover();
                    
                    break;
                    
                }
                
                
            }
            
            
        },1);
        
        
    }
    
    function monitorkey(){
        return setInterval(function() {
            //向上运动
            //默认方向  上  右  下  左  
            if (pdirection[0] == 1) {
                // console.log(parseFloat($(plain).css("top")))
                if (parseFloat($(plain).css("top")) >= 5)
                    // plain.style.top.CSSValue=plain.style.top+10
                    $(plain).css({
                        "top": parseFloat($(plain).css("top")) - move
                    });
                else
                    $(plain).css({"top":0});
                // move++
        
            }
            if (pdirection[2] == 1) { //向下运动
                // console.log(parseFloat($(plain).css("top")))
                if (parseFloat($(plain).css("top")) <= 513)
                    // plain.style.top.CSSValue=plain.style.top+10
                    $(plain).css({
                        "top": parseFloat($(plain).css("top")) + move
                    });
                else
                    $(plain).css({"top":$(stage).Height-$(plain).Height});
                // move++
        
            }
            if (pdirection[3] == 1) { //向左运动
                // console.log(parseFloat($(plain).css("top")))
                if (parseFloat($(plain).css("left")) >= -10)
                    // plain.style.top.CSSValue=plain.style.top+10
                    $(plain).css({
                        "left": parseFloat($(plain).css("left")) - move
                    });
                // move++
        
            }
            if (pdirection[1] == 1) { //向右运动
                // console.log(parseFloat($(plain).css("top")))
                if (parseFloat($(plain).css("left")) <= 270)
                    // plain.style.top.CSSValue=plain.style.top+10
                    //console.log(parseFloat($(plain).css("right")))
                    $(plain).css({
                        "left": parseFloat($(plain).css("left")) + move
                    });
                // move++
        
            }
            if (pdirection[4] == 1) { //炮弹向上运动
                // console.log(parseFloat($(plain).css("top")))
                //var bulletx=parseFloat($(plain).css("left"))+$(plain).width()/2-bulletw/2;
                // console.log($(plain).css("left"))
                // console.log(parseFloat($(plain).css("left")))
                // console.log(parseFloat($(plain).css("top"))-parseFloat($(bullet).css("height")));
                //var bullety=parseFloat($(plain).css("top"))-bulleth;
        
                // plain.style.top.CSSValue=plain.style.top+10
                // $(plain).css({"left":parseFloat($(plain).css("left"))+move});
                // move++
                // $("<div class=\"bullet\"></div>")   转义方法
                //$("<div class='bullet'></div>").css({"left":bulletx,"top":bullety}).appendTo(stage);
        
        
            }
        
        }, 1);
    }
    // 载入背景音乐
    // $("#mp3bg").play();
    var mp3bg=document.getElementById("mp3bg");
    // var timerbg= setInterval(function(){
    //     mp3bg.currentTime=0;
    //     // mp3bg.controls
    //     mp3bg.play();
    //     clearInterval(timerbg);
    // })
    $("#buttonmusic").click();
    $("#buttonmusic").click(function(){
        if($(this).html()=="音乐"){
            $(this).html("暂停");
            //mp3bg.currentTime=0;
            // mp3bg.controls
            mp3bg.play();
            //clearInterval(timerbg);
        }else{
            //mp3bg.currentTime=0;
            // mp3bg.controls
            mp3bg.pause();
            $(this).html("音乐");
            
        }
        
    })
    
    
    function startgame(){
        //碰撞检测开始
        timerkiss=monitorkiss();
        //重置方向键盘
        console.log(pdirection);
        pdirection = [0, 0, 0, 0, 0];
        
        //生成玩家飞机
        // var timertmp=setInterval(function(){
            //var aa=$(stage).height()-$(plain).height()*2
            //console.log(aa)
        //     if(parseFloat($(plain).css("top"))<($(stage).height()-$(plain).height()*2)){
        //         //alert("33");
                
        //         console.log("666");
        //         clearInterval(timertmp);
                
        //     }else
        //         plain.style.cssText="top:"+(parseFloat($(plain).css("top"))-5)+"px;left:"+$(stage).width()/2-$(plain).width()/2+"px;";
            
        // });
    }
    
    function gameover(){
        //碰撞检测停止
        clearInterval(timerkiss);
        // alert("gameover");
        //移除玩家飞机
        // plain.remove();
        //移除玩家飞机使用隐藏的方法
        //plain.hidden=true;
        
        //移除所有敌机
        $(".enemy").remove();
        
        // console.log(pdirection)
        //移除玩家飞机,使用隐藏的方法
        // $(plain).hide();
        plain.style.cssText="top:"+$(stage).height()+"px;left:"+($(stage).width()/2-$(plain).width()/2+"px");
        if(confirm("你玩不起,你个小垃圾,你没有实力")){
            startgame();
            
        }
        //重置方向键盘
        pdirection = [0, 0, 0, 0, 0];
        
        
    }
    
});


// 第二章图片
// $(function(){
//     //这里写代码的时候是可以控制所有htmldom节点的
//     //dom

//     var stage=document.getElementById("stage"); //获取舞台节点
//     var bg2=stage.getElementsByClassName("bg2")[0];//获取背景图片
//     // console.log(bg1)  //检查是否捕获bg1
//     var topval=-968;
//     // bg1.style.cssText="top: -30px;"
//     var t2=setInterval(function(){
//         // console.log("ddd")
//         // console.log(bg1.style.cssText)
//         // bg1.scrollTop=bg1.scrollTop+10;
//         bg2.style.cssText="top: "+topval+"px";
//         topval+=1
//         //topval++背景向下移动  

//     },70);

//     // t1.clearInterval();  //时钟停止

// });
// alert("4444")   不使用jq的话无法完全加载再弹弹框

// function myapp(){
//     定义函数的基本格式

// }


// function xxxx (){
//         // console.log("ddd")
//         console.log(bg1.style.cssText)
//         // bg1.scrollTop=bg1.scrollTop+10;
//         bg1.style.cssText="top: "+topval+"px";
//         topval+=1

//     }

css:

#stage{
    width: 320px;
    height: 568px;
    background-color: antiquewhite;
    color: white;
    overflow: hidden;
    margin: auto;
    position: relative;
    
}
.bg1{
    background-image: url(../img/bg_01.png);
    height: 768px;
    width: 100%;
    position: absolute;
    top: -200px;
    /* z-index: 5; */
}
.bg2{
    
    background-image: url(../img/bg_01.png);
    height: 768px;
    width: 100%;
    position: absolute;
    top: -968px;
    /* z-index: 5; */
}
.plain{
    height: 53px;
    width: 67px;
    background-image: url(../img/plane_blue_01.png);
    z-index: 11;
    position: absolute;
    bottom: 0;
    background-size: 100% 100%;
}

.enemy{
    height: 53px;
    width: 67px;
    position: absolute;
    background-size: 100% 100%;
    
}
.enemy1{
    
    background-image: url(../img/enemy_04.png);
    /* z-index: 10; */
    height: 40px;
    width: 50px;
    top:0;
    left: 20px;
}
.enemy2{
    
    background-image: url(../img/enemy_03.png);
    /* z-index: 10; */
    top:0;
    left: 90px;
    
}
.enemy3{
    background-image: url(../img/enemy_02.png);
    /* z-index: 10; */
    top:0;
    left: 160px;
    height: 70px;
}
.enemy4{
    background-image: url(../img/enemy_01.png);
    /* z-index: 10; */
    top:0;
    left: 230px;
    
}
/* 子弹 */
.bullet{
    background-image: url(../img/bullet_01.png);
    width: 50px;
    height: 65px;
    position: absolute;
    /* z-index: 10; */
    
    
    
}
/* 按钮 */
.func{
    width: 40px;
    height: 20px;
    position: absolute;
    z-index: 12;
    background-color: skyblue;
    opacity: 0.6;
    color: white;
    cursor: pointer;
}
.func:hover{
    opacity: 1;
    transition-duration: 1s;
    
    
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

原文出处:https://blog.csdn.net/weixin_45769564/article/details/123189

[!--infotagslink--]

相关文章

  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • 详解前端安全之JavaScript防http劫持与XSS

    作为前端,一直以来都知道HTTP劫持与XSS跨站脚本、CSRF跨站请求伪造。防御这些劫持最好的方法是从后端入手,前端能做的太少。而且由于源码的暴露,攻击者很容易绕过防御手段。但这不代表我们去了解这块的相关知识是没意义的,本文的许多方法,用在其他方面也是大有作用。...2021-05-24
  • js+css实现回到顶部按钮(back to top)

    这篇文章主要为大家详细介绍了js+css实现回到顶部按钮back to top回到顶部按钮,感兴趣的小伙伴们可以参考一下...2016-03-03
  • JavaScript仿支付宝密码输入框

    那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签...2016-01-02
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • js实现调用网络摄像头及常见错误处理

    这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
  • JS实现随机生成验证码

    这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • js组件SlotMachine实现图片切换效果制作抽奖系统

    这篇文章主要介绍了js组件SlotMachine实现图片切换效果制作抽奖系统的相关资料,需要的朋友可以参考下...2016-04-19
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20
  • 基于JavaScript实现表单密码的隐藏和显示出来

    为了网站的安全性,很多朋友都把密码设的比较复杂,但是如何密码不能明显示,不知道输的是对是错,为了安全起见可以把密码显示的,那么基于js代码如何实现的呢?下面通过本文给大家介绍JavaScript实现表单密码的隐藏和显示,需要的朋友参考下...2016-03-03
  • js实现列表按字母排序

    这篇文章主要为大家详细介绍了js实现列表按字母排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-11
  • 基于JavaScript实现文字超出部分隐藏

    这篇文章主要介绍了基于JavaScript实现文字超出部分隐藏 的相关资料,需要的朋友可以参考下...2016-03-01
  • JS实现响应鼠标点击动画渐变弹出层效果代码

    这篇文章主要介绍了JS实现响应鼠标点击动画渐变弹出层效果代码,具有非常自然流畅的动画过度效果,涉及JavaScript针对鼠标事件的响应及页面元素样式的动态操作相关技巧,需要的朋友可以参考下...2016-03-28
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • node.JS md5加密中文与php结果不一致怎么办

    这次文章要给大家介绍的是node.JS md5加密中文与php结果不一致怎么办,不知道具体解决办法的下面跟小编一起来看看。 因项目需要,需要Node.js与PHP做接口调用,发现nod...2017-07-06
  • 浅析AngularJS Filter用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter。如果对smarty比较熟悉的话,学习angularjs会比较容易一点,这篇文章给大家介绍angularjs filter用法详解,感兴趣的朋友一起学习吧...2015-12-29
  • NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20