单击汉堡包图标,然后调整浏览器大小后,导航栏项目消失

时间:2018-11-30 23:30:44

标签: javascript html css navbar responsive

我非常感谢我能提供的所有帮助:)

我正在尝试创建一个响应式导航栏,该导航栏可以编辑以供以后使用。 但是似乎我的汉堡包图标有问题。如果我调整Web浏览器的大小,则内容将切换为适合移动设备的汉堡包图标,并显示菜单,反之亦然。

但是,当我单击移动视图中的汉堡图标,然后再次单击以使菜单消失时,将其调整为桌面视图后,菜单丢失了。

我如何使其工作?

HTML:

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Framework</title>

    <link rel="stylesheet" type="text/css" media="screen" href="css/main.css" />

    <script src="js/main.js"></script>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
        $(document).ready(function(){
            $(".navbar-hamburger").click(function(){
                $(".navbar-item").toggle();
            });
        });
    </script>
</head>

<body class="bg-grey-light">
    <nav class="navbar bg-white">
        <div class="navbar-brand">Company Name</div>
        <div class="navbar-item">
            <a href="index.html" class="">Home</a>
        </div>
        <div class="navbar-item">
            <a href="#">About</a>
        </div>
        <div class="navbar-item">
            <a href="#">Shop</a>
        </div>
        <div class="navbar-item">
            <a href="#">Forum</a>
        </div>
        <div class="navbar-hamburger">
            <i class="fa fa-chevron-down"></i>
        </div>
    </nav>    
</body>

CSS:

.navbar{
    width: 100%;
    display: flex;
    flex-direction: row;
    align-items: center;
    position: relative;
}

.navbar-brand{
    flex-grow: 100;
    padding: 0.75rem;
    padding-left: 1.5rem;
}

.navbar-item{
    flex-grow: 0;
    padding: 0.75rem;
    display: block;
}

.navbar-item:hover {
    background-color: var(--color-grey-lighter);
}

.navbar-hamburger{
    display: none;
    position: absolute;
    padding: 0.75rem 1.5rem 0.75rem 1.5rem;
    right: 0;
}

.navbar-hamburger-active{
    display: none;
    position: absolute;
    padding: 0.75rem 1.5rem 0.75rem 1.5rem;
    right: 0;
}

@media only screen and (max-width: 720px) {
    .navbar{
        flex-direction: column;
        align-items: flex-start;
    }

    .navbar-brand{
        width: 100%;
    }

    .navbar-item{
        width: 100%;
        padding-left: 1.5rem;
        display: none;
    }

    .navbar-hamburger{
        display: block;
    }
}

简要演示: https://codepen.io/zalandemeter12/pen/dQayMP

致谢

1 个答案:

答案 0 :(得分:2)

您可以改用toggleClass并仅在小屏幕上隐藏导航栏项

@import url("https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css");
.navbar{
    width: 100%;
    display: flex;
    flex-direction: row;
    align-items: center;
    position: relative;
}

.navbar-brand{
    flex-grow: 100;
    padding: 0.75rem;
    padding-left: 1.5rem;
}

.navbar-item{
    flex-grow: 0;
    padding: 0.75rem;
    display: block;
}

.navbar-item:hover {
    background-color: var(--color-grey-lighter);
}

.navbar-hamburger{
    display: none;
    position: absolute;
    padding: 0.75rem 1.5rem 0.75rem 1.5rem;
    right: 0;
}

.navbar-hamburger-active{
    display: none;
    position: absolute;
    padding: 0.75rem 1.5rem 0.75rem 1.5rem;
    right: 0;
}

@media only screen and (max-width: 720px) {
    .navbar{
        flex-direction: column;
        align-items: flex-start;
    }

    .navbar-brand{
        width: 100%;
    }

    .navbar-item{
        width: 100%;
        padding-left: 1.5rem;
        display: none;
    }

    .navbar-hamburger{
        display: block;
    }
@media only screen and (max-width: 768px) { 
    .navbar-item{
      display:none;
     }
    .navbar-item.opened{
      display:block;
    }
}    
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script>
        $(document).ready(function(){
            $(".navbar-hamburger").click(function(){
                $(".navbar-item").toggleClass('opened');
            });
        });
</script>
<nav class="navbar bg-wihite">
        <div class="navbar-brand">Company Name</div>
        <div class="navbar-item">
            <a href="index.html" class="">Home</a>
        </div>
        <div class="navbar-item">
            <a href="#">About</a>
        </div>
        <div class="navbar-item">
            <a href="#">Shop</a>
        </div>
        <div class="navbar-item">
            <a href="#">Forum</a>
        </div>
        <div class="navbar-hamburger">
            <i class="fa fa-chevron-down"></i>
        </div>
    </nav>