简体   繁体   English

单击按钮时显示导航栏-之后不会关闭

[英]Show Nav Bar on Button Click - Doesn't Close Afterwards

So I've set up a new navigation on my website so that it is now hidden as an icon and displays when it is clicked. 因此,我在网站上设置了新的导航,以便现在将其隐藏为图标并在单击时显示。 Once clicked again it is supposed to hide the menu again, however, it does not. 再次单击它应该再次隐藏菜单,但是不会。

Example of Menu Closed: 菜单关闭示例:

封闭菜单

Example of Menu Opened: 菜单示例:

打开菜单

Clicking the three bars icon opens the four menu buttons you see in the second example, but then when I try to click the button to close the menu, it does nothing... even though it is supposed too. 单击三个条形图标将打开您在第二个示例中看到的四个菜单按钮,但是当我尝试单击该按钮以关闭菜单时,它什么也没做...即使也应该这样做。 Any help on fixing this would be greatly appreciated. 任何解决此问题的帮助将不胜感激。

HTML: HTML:

<div class="menu-button">
        <a href="#main_nav" id="access_nav"><i class="fa fa-bars"></i></a>
    </div>

    <nav id="main_nav">
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">About</a></li>
            <li><a href="#">Portfolio</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
    </nav>
</div>

CSS: CSS:

/* ------------------------------------------------------------------- */
/* Navigation Section
---------------------------------------------------------------------- */

.menu-button {
    padding-top:25px;
    padding-left:30px;
    float:left;
}

.menu-button a {
    color:#eee;
}

.menu-button a:hover {
    color:#940002;
}

#main_nav {
    display:none;
    position: absolute;
    padding-left: 40px;
    padding-top: 10px;
}

#main_nav ul {
    list-style-type:none;
}

#main_nav li {
    display:inline;
    margin:0 10px;
}

#main_nav a {
    text-decoration:none;
    color:#fff;
}


.with_nav #main_nav {
    display: block;
}


#main_nav:target {
    display: block;
}

JavaScript: JavaScript的:

<!-- JavaScript
================================================== -->
<script src="https://use.fontawesome.com/430ad8b17b.js"></script>
<script>
var nav = document.getElementById('access_nav'),
    body = document.body;

nav.addEventListener('click', function(e) {
    body.className = body.className? '' : 'with_nav';
    e.preventDefault();
}); 
</script>

The issue isn't your JavaScript, it's your CSS. 问题不是您的JavaScript,而是您的CSS。 When #main_nav shows up, it's covering up the icon, so the icon is no longer clickable. #main_nav出现时,它掩盖了图标,因此该图标不再可单击。 You're clicking on #main_nav , not the icon. 您单击的是#main_nav ,而不是图标。 You can easily tell this because the hand mouse pointer your get on hover turns into a regular mouse pointer when the nav shows up. 您可以轻松地说出这一点,因为导航栏显示时,您将悬停的手形鼠标指针变成了常规鼠标指针。

In your CSS, the fix that makes the most sense is to remove the padding-left on #main_nav and use left instead, since you're already absolutely positioning it anyway. 在您的CSS中,最有意义的解决方法是删除#main_nav上的padding-left并改用left ,因为无论如何您已经将其绝对定位了。

#main_nav {
  display: none;
  position: absolute;
  /*padding-left: 40px;*/
  left: 60px;
  padding-top: 10px;
}

Working snippet: 工作片段:

 var nav = document.getElementById('access_nav'), body = document.body; nav.addEventListener('click', function(e) { body.className = body.className ? '' : 'with_nav'; e.preventDefault(); }); 
 .menu-button { padding-top: 25px; padding-left: 30px; float: left; } .menu-button a { color: #000; } .menu-button a:hover { color: #940002; } #main_nav { display: none; position: absolute; /*padding-left: 40px;*/ left: 60px; padding-top: 10px; } #main_nav ul { list-style-type: none; } #main_nav li { display: inline; margin: 0 10px; } #main_nav a { text-decoration: none; color: #000; } .with_nav #main_nav { display: block; } #main_nav:target { display: block; } 
 <div class="menu-button"> <a href="#main_nav" id="access_nav"><img class="fa fa-bars" src="http://placehold.it/25x25"></a> </div> <nav id="main_nav"> <ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Portfolio</a></li> <li><a href="#">Contact</a></li> </ul> </nav> 

body.className? body.className? '' : 'with_nav'; '':'with_nav'; maybe create a class instead of setting it to no class. 也许创建一个类而不是将其设置为no class。 im not sure if this clears its css properties.... 即时通讯不知道这是否清除其CSS属性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM