【问题标题】:Conventional Navigation menu and Hamburger menu toggle Jquery传统导航菜单和汉堡菜单切换 Jquery
【发布时间】:2018-04-24 15:41:18
【问题描述】:

您好,我正在制作我的第一个网站,并试图获得一些应该很容易工作但我做不到的东西。

所以我有一个基本的导航菜单,它浮动在标题的右侧。当屏幕宽度小于 650 像素时,我希望菜单消失并显示汉堡包(这太好了,我明白了)

问题是当我在汉堡上调用切换功能时,当我将窗口大小调整为> 650时它不会刷新。我已经尝试了一切,我相信一定有一个简单的方法,这是我所有的代码:

HTML:

<header>
    <div id="headLogo">
        <a href="clhome.php"><img src="images/primLogo2.png" 
alt="Imagehere"></a>
    </div>

    <div id="primHamMenu">
        <a href="#" id="primHamLink">
            <span></span>
            <span></span>
            <span></span>
        </a>
    </div>

    <div id="headNav">
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">CV</a></li>
                <li><a href="#">Lingerie</a></li>
                <li><a href="#">Swim</a></li>
                <li><a href="#">Print</a></li>
                <li><a href="#">Technical</a></li>
            </ul>
        </nav>
    </div>
</header>

CSS:

#primHamMenu{
width: 4em;
margin: 0 auto;
margin-bottom: 1em;
/*display: none;*/
}

#primHamMenu a span{
width: 100%;
border-bottom: 0.16em solid #ffffff;
display: block;
padding: 0.41em;
}

/*----------Prim Nav media queries-------*/

@media screen and (max-width: 920px){

#headLogo{
    float: none;
    width: 50%;
    margin: 0 auto;
    position: relative;
    margin-bottom: 0;
    padding-bottom: 0;
}

#headNav{
    float: none;
    width: 100%;
    margin: 0 auto;
    position: relative;
    top: auto;
    right: auto;
    margin-top: 2em;
}

#headNav ul{
    width: 90%;
}

}

@media screen and (max-width: 650px){

#headLogo{
    width: 75%;
}

#headNav{
    transform: none;
    /*display: none;*/
}

#headNav ul{
    flex-direction: column;
    justify-content: space-around;
    text-align: center;
}

#headNav ul li{
    margin: 1em 0 1em 0;
}

#primHamMenu{
    /*display: block;*/
}

JQuery:

$(document).ready(function () {

var width = $(window).width();

    $(window).resize(function(){

        if(width > 650){
            $("#primHamMenu").hide();
            $("#headNav").show();
        }else{
            $("#primHamMenu").show();
            $("#headNav").hide();
        }

    })

    // toogle headNav
    $("#primHamMenu").click(function(){ 
        $("#headNav").toggle();
    });

})

除了切换功能外,其他所有功能都可以正常工作

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 你试过把css放到标签里吗?
  • $(window).resize()包裹起来。
  • 我试图这样做,然后一切都停止了工作,我再试一次
  • 我调整了大小,一切正常,但菜单的切换功能没有
  • 如果此答案或任何答案解决了您的问题,请考虑通过单击复选标记并投票来接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做:)

标签: jquery css media-queries toggle slideshow


【解决方案1】:

以正确的方式使用 matchMedia。

$(document).ready(function () {
   var mq = window.matchMedia("(max-width: 630px)");
       mq.addListener(WidthChange);
       WidthChange(mq);

  function WidthChange(mq) {

    if (mq.matches) {
         $("#primHamMenu").show();
         $("#headNav").hide();
    } else {
       $("#primHamMenu").hide();
       $("#headNav").show();
   }

  }

  $("#primHamMenu").click(function(){
        $("#headNav").toggle();
  });

});
#primHamMenu{
width: 4em;
margin: 0 auto;
margin-bottom: 1em;
/*display: none;*/
}

#primHamMenu a span{
width: 100%;
border-bottom: 0.16em solid #ffffff;
display: block;
padding: 0.41em;
}

/*----------Prim Nav media queries-------*/

@media screen and (max-width: 920px){

#headLogo{
    float: none;
    width: 50%;
    margin: 0 auto;
    position: relative;
    margin-bottom: 0;
    padding-bottom: 0;
}

#headNav{
    float: none;
    width: 100%;
    margin: 0 auto;
    position: relative;
    top: auto;
    right: auto;
    margin-top: 2em;
}

#headNav ul{
    width: 90%;
}

}

@media screen and (max-width: 650px){

#headLogo{
    width: 75%;
}

#headNav{
    transform: none;
    /*display: none;*/
}

#headNav ul{
    flex-direction: column;
    justify-content: space-around;
    text-align: center;
}

#headNav ul li{
    margin: 1em 0 1em 0;
}

#primHamMenu{
    /*display: block;*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
    <div id="headLogo">
        <a href="clhome.php"><img src="images/primLogo2.png" 
alt="Imagehere"></a>
    </div>

    <div id="primHamMenu">
        <a href="#" id="primHamLink">
            <span></span>
            <span></span>
            <span></span>
        </a>
    </div>

    <div id="headNav">
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">CV</a></li>
                <li><a href="#">Lingerie</a></li>
                <li><a href="#">Swim</a></li>
                <li><a href="#">Print</a></li>
                <li><a href="#">Technical</a></li>
            </ul>
        </nav>
    </div>
</header>

【讨论】:

  • 嗨,我设法让它工作了,但这更好,谢谢
  • 欢迎@PeshotanPavri ;)
猜你喜欢
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多