簡體   English   中英

用 JS 關閉漢堡菜單

[英]Close hamburger menu with JS

單擊鏈接時如何關閉我的漢堡菜單,我需要它進行一頁導航。 菜單工作正常,但只需要一種方法來關閉它。 我對JS知之甚少。

我在 HTML 和 CSS 中有這個,沒有任何 JS:

index.html 文件中的 HTML

<nav>
<div id="menuToggle">
    <input type="checkbox"/>
    <span></span>
    <span></span>
    <span></span>

<ul id="menu" class="navbar-collapse">
        <li><a href="#1">idi na 1</a></li>
        <li><a href="#2">idi na 2</a></li>
        <li><a href="#3">idi na 3</a></li>
</ul>
</div>
</nav>

style.css 文件中的 CSS

*{
    margin:0;
    padding:0;
}
nav{
    position:fixed;
    z-index: 99999;
}
a{
    text-decoration: none;
    font-family: 'Lato', sans-serif;
    color: #000000;
    transition: color 0.3s ease;
}
a:hover{
    color: #999999;
}
#menuToggle{
    display: block;
    position: relative;
    top: 50px;
    left: 50px;
    z-index: 1;
    -webkit-user-select: none;
    user-select: none;
}
#menuToggle input{
    display: block;
    width: 40px;
    height: 32px;
    position: absolute;
    top: -7px;
    left: -5px;
    cursor: pointer;
    opacity: 0;
    z-index: 2;
    -webkit-touch-callout: none;
}
#menuToggle span{
    display: block;
    width: 33px;
    height: 4px;
    margin-bottom: 5px;
    position: relative;
    background: #000000;
    border-radius: 3px;
    z-index: 1;
    transform-origin: 4px 0px;
    transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
    background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
    opacity 0.55s ease;
}
#menuToggle span:first-child{
    transform-origin: 0% 0%;
}
#menuToggle span:nth-last-child(2){
    transform-origin: 0% 100%;
}
#menuToggle input:checked ~ span{
    opacity: 1;
    transform: rotate(45deg) translate(-2px, -1px);
    background: #000000;
}
#menuToggle input:checked ~ span:nth-last-child(3){
    opacity: 0;
    transform: rotate(0deg) scale(0.2, 0.2);
}
#menuToggle input:checked ~ span:nth-last-child(2){
    opacity: 1;
    transform: rotate(-45deg) translate(0, -1px);
}
#menu{
    background-size:cover;
    background-repeat:no-repeat;    
    position: absolute;
    width: 100vw;
    height:100vh;
    margin: -77px 0 0 -50px;
    padding: 50px;
    padding-top: 125px;
    background-color: rgba(255,255,255,1);
    list-style-type: none;
    -webkit-font-smoothing: antialiased;
    transform-origin: 0% 0%;
    transform: translate(-100%, 0);
    transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0);
}
#menu li{
    padding: 10px 0;
    font-size: 60px;
    text-align: center;
}
#menuToggle input:checked ~ ul{
    transform: scale(1.0, 1.0);
    opacity: 1;
}

@media only screen and (max-width:480px) { 
    #menuToggle input {
        top: 2px;
        left: -5px;
    }
}

非常感謝您提供的任何幫助!

使用trigger

 $('#menu > li > a').on('click', function() { $("#menuToggle").find('input').trigger("click"); });
 *{ margin:0; padding:0; } nav{ position:fixed; z-index: 99999; } a{ text-decoration: none; font-family: 'Lato', sans-serif; color: #000000; transition: color 0.3s ease; } a:hover{ color: #999999; } #menuToggle{ display: block; position: relative; top: 50px; left: 50px; z-index: 1; -webkit-user-select: none; user-select: none; } #menuToggle input{ display: block; width: 40px; height: 32px; position: absolute; top: -7px; left: -5px; cursor: pointer; opacity: 0; z-index: 2; -webkit-touch-callout: none; } #menuToggle span{ display: block; width: 33px; height: 4px; margin-bottom: 5px; position: relative; background: #000000; border-radius: 3px; z-index: 1; transform-origin: 4px 0px; transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0), background 0.5s cubic-bezier(0.77,0.2,0.05,1.0), opacity 0.55s ease; } #menuToggle span:first-child{ transform-origin: 0% 0%; } #menuToggle span:nth-last-child(2){ transform-origin: 0% 100%; } #menuToggle input:checked ~ span{ opacity: 1; transform: rotate(45deg) translate(-2px, -1px); background: #000000; } #menuToggle input:checked ~ span:nth-last-child(3){ opacity: 0; transform: rotate(0deg) scale(0.2, 0.2); } #menuToggle input:checked ~ span:nth-last-child(2){ opacity: 1; transform: rotate(-45deg) translate(0, -1px); } #menu{ background-size:cover; background-repeat:no-repeat; position: absolute; width: 100vw; height:100vh; margin: -77px 0 0 -50px; padding: 50px; padding-top: 125px; background-color: rgba(255,255,255,1); list-style-type: none; -webkit-font-smoothing: antialiased; transform-origin: 0% 0%; transform: translate(-100%, 0); transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0); } #menu li{ padding: 10px 0; font-size: 60px; text-align: center; } #menuToggle input:checked ~ ul{ transform: scale(1.0, 1.0); opacity: 1; } @media only screen and (max-width:480px) { #menuToggle input { top: 2px; left: -5px; } }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="menuToggle"> <input type="checkbox" /> <span></span> <span></span> <span></span> <ul id="menu" class="navbar-collapse"> <li><a href="#1">idi na 1</a></li> <li><a href="#2">idi na 2</a></li> <li><a href="#3">idi na 3</a></li> </ul> </div>

注意:不要忘記將您的 js 代碼放在 document.ready 中。

$(function() {
 $('#menu > li > a').on('click', function() {
      $("#menuToggle").find('input').trigger("click");
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM