繁体   English   中英

动画导航栏不起作用

[英]Animated navigation-bar doesn't work

我的导航退出菜单有问题。 我的结果应该是,如果我单击一个div,则退出菜单的高度将连续变化(0像素到400像素,然后返回)。 这意味着我必须使用if语句。 问题在于,退出菜单仅在第一次使用时有效,但是我再次单击时,高度保持在400px,所以我认为if语句不正确。

HTML:

<div id="menuIcon" onclick="openMenu()">
    <div id="bar"> </div>
    <div id="bar"> </div>
    <div id="bar"> </div>
    <div id="bar"> </div>
</div>

<div id="dropBar"> 
    <ul>
        <li> Portfolio </li>
        <li> About me </li>
        <li> Contact </li>
    </ul>
</div>

CSS:

#dropBar {
    text-align: center;
    width: 100%;
    background-color: white;
    height: 0px;
    overflow-x: hidden;
    transition: 0.3s;
}

JAVASCRIPT:

function openMenu() {
        var x = document.getElementById('dropBar');

        if (x.style.height = "0px") {
            x.style.height = "400px";
        } else {
            x.style.height = "0px";
        }
}

首先,用一个= =分配不比较。然后应该使用clientHeight而不是style.height,它返回CssStyleDeclaration

function openMenu() {
        var x = document.getElementById('dropBar');

        // double == for comparison
        // clientHeight returns a number
        if (x.clientHeight == 0) { 
          //do some
        } else {
          //dome sone else
        }
}

注意 clientHeight在计算中包括填充

if语句中,不应使用单个等号。 使用===等式运算符,如下所示:

if (x.style.height === "0px") {
   x.style.height = "400px";
}

有了这个小小的改动,您的函数就可以工作了: https : //jsfiddle.net/rgbgtL08/

暂无
暂无

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

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