【问题标题】:Javascript(jQuery) hiding and appearing css files like a menuJavascript(jQuery)像菜单一样隐藏和显示css文件
【发布时间】:2017-09-09 23:48:33
【问题描述】:

我正在尝试使用 display:none 和 display:block 制作菜单。老实说,我不确定最好的方法是什么。它们必须是图像,因为它们是我在 Photoshop 中使用的不同字体。这是我的 HTML。

<div id="wrap">
    <div>
        <img class="difficulty-rally"src="assets/images/difficulty-rally.png">
        <div class="difficulties">
            <img class="difficulty-easy"src="assets/images/easy-green.png">
            <img class="difficulty-medium"src="assets/images/medium-green.png">
            <img class="difficulty-hard"src="assets/images/hard-green.png">
            <img class="difficulty-insane"src="assets/images/insane-green.png">
        </div>
    </div>
</div>

这是我的 CSS

@import 'reset.css';
/*///////////////////MAIN/////////////////////////*/
#wrap{
    height: 500px;
    width:  800px;
    display: block;
    margin: 0 auto;
    border: 1px solid black;
    background-color: black;
    z-index: -900000;
    position: relative;
    overflow: hidden;
}
#main{
    position: relative;
}
#header{
    height: 52px;
    width: 295px;
    margin: 0 auto;
}
.title{
    margin-top: 20px;
    height: 52px;
    width: 295px;
    background-image: url(../images/title.png);
}
.difficulty-rally{
    position: absolute;
    z-index: -1000;
}
.diificulties{
    position: absolute;
    z-index: 20;
    height: 230px;
    width: 150px;
    margin-top: 157px;
    margin-left: 335px;
}
.difficulty-easy{
    position: absolute;
    z-index: 30;
    display: none;
}
.difficulty-medium{
    position: absolute;
    z-index: 30;
    top: 62px;
    left: 2px;
    display: block;
}
.difficulty-hard{
    position: absolute;
    z-index: 30;
    bottom: 62px;
    left: 3px;
    display: none;
}
.difficulty-insane{
    position: absolute;
    z-index: 30;
    bottom: 1px;
    left: 2px;
    display: none;
}     

这是我的 JavaScript(jQuery)

$(document).ready(function(){
    $(document).on('keyup', function(e){
        if(e.keyCode === 27){
            window.location = 'minigame.php';
        }   
    })

    var easy = $('.difficulty-easy');
    var medium = $('.difficulty-medium');
    var hard = $('.difficulty-hard');
    var insane = $('.difficulty-insane');

    $(document).on('keyup', function(e){
        if(e.keyCode === 40 && medium.css('display') == "block"){
            medium.css({'display' : 'none'});
            hard.css({'display' : 'block'})
        }
        if(e.keyCode === 38 && medium.css('display') == "block"){
            medium.css({'display' : 'none'});
            easy.css({'display' : 'block'})
        }
        if(e.keyCode === 40 && easy.css('display') == "block"){
            easy.css({'display' : 'none'});
            medium.css({'display' : 'block'})
        }
        if(e.keyCode === 38 && easy.css('display') == "block"){
            easy.css({'display' : 'none'});
            insane.css({'display' : 'block'})
        }
    })

});

编辑:对不起,我忘了解释问题,基本上当我点击媒体时,它变得疯狂而不是简单!

我知道我没有完成一些选择,但感觉它们不起作用我会在这里发布。

EDITx2:

easy.hide();
hard.hide();
insane.hide();
medium.show();

$(document).on('keyup', function(e){
    if(e.keyCode === 40 && medium.show();){
        medium.hide();
        hard.show();
    }
    if(e.keyCode === 40 && hard.show();){
        hard.hide();
        insane.show();
    }
})

回答:

    var current = 1;
    var difficulties = $('#difficulties > img');

    $(document).on('keyup', function(e){
        if(e.keyCode === 40){
            current = current + 1;
        }
        if(e.keyCode === 38){
            current = current - 1;
        }

        var selectedIndex = current % difficulties.length; //so you can click enter and do something

        if(e.keyCode === 13){
            alert($(difficulties.get(selectedIndex)).text()) //example of what you can do
        }

        $(difficulties.get(current % difficulties.length)).show().siblings().hide();
    })

});

【问题讨论】:

    标签: javascript jquery css if-statement menu


    【解决方案1】:

    使用 JQuery,您可以使用 .hide() 隐藏内容并使用 .show() 显示它们,而不是弄乱 css

    将您的 keyup 处理程序更改为:

    var current = 1;
    var difficulties = $('#difficulties > img');
    
    
    $(document).on('keyup', function(e){
        if(e.keyCode === 40){
            current = current + 1;
        }
        if(e.keyCode === 38){
            current = current - 1;
        }
    
        var selectedIndex = current % difficulties.length; //so you can click enter and do something
    
        if(e.keyCode === 13){
            alert($(difficulties.get(selectedIndex)).text()) //example of what you can do
        }
    
        $(difficulties.get(current % difficulties.length)).show().siblings().hide();
    })
    

    【讨论】:

    • 你我把easy.hide();和keyup处理程序之外的其他人?顺便说一句,我没有投票(icant)idk。
    • 我也遇到了同样的问题! :(我点击向上键,它从中等跳到疯狂。即使它应该很容易。抱歉..uhhh
    • 我更新了我的答案,也许问题是可见的测试。如果这不起作用,我可以建议你做一个小提琴:www.jsfiddle.net,这样每个人都在同一个页面上。
    • 谢谢您,先生。我找到了答案,感觉您给了我很多帮助,如果您将答案更改为我在那里编辑的答案,我会给您打勾^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2012-12-16
    • 2013-10-31
    相关资源
    最近更新 更多