移动视图菜单问题?

时间:2018-06-09 18:04:47

标签: javascript jquery html css

我实现了下面的代码,我在移动视图上面临一个问题,当点击手机上的菜单按钮时没有显示菜单,但如果我没有向下滚动菜单工作, 我如何在移动视图上解决此问题

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
        $("body").toggleClass("hidden");
    })
    
        $(window).scroll(function() {
        var distanceFromTop = $(document).scrollTop();
        if (distanceFromTop >= $('.centered-logo').height())
        {
            $('nav').addClass('fixed');
        }
        else
        {
            $('nav').removeClass('fixed');
        }
    });
    
})
body{height: 3000px;
    margin: 0;
    padding: 0;
    font-family: monospace;
}
.fixed {
    position: fixed;
    top: 0;
    width: 100%;
}
.hidden{
    overflow: hidden;
}
nav{
    width: 100%;
    background: #202c45;
    padding: 0 50px;
    box-sizing: border-box;
}
nav h1{
    margin: 0;
    padding: 0;
    float: left;
    padding-top: 18px;
}

nav h1 a{
    color: #fff;
    text-decoration: none;    

}

nav ul{
    margin: 0;
    padding: 0;
    float: right;
}

nav ul li{
    list-style: none;
    display: inline-block;
    padding: 20px;
    transition: 0.5s;
    }

nav ul li:hover{
    background: #f2184f;
}

nav ul li a{
    color: #fff;
    text-decoration: none;
}

.responsive-bar{
    width: 100%;
    background: #202c45;
    padding: 10px 30px;
    box-sizing: border-box;
    display: none;
}

.responsive-bar h3{
    margin: 0;
    padding: 3px 0;
    float: left;
    color:#fff;
}
.responsive-bar h3 a{
    color:#fff;
    text-decoration: none;
    }
.responsive-bar h4{
    margin: 0;
    padding: 0;
    color: #fff;
    float: right;
    cursor: pointer;
    padding: 5px 10px;
    background:#f2184f;
    text-transform: uppercase;
}
@media (min-width:768px){
    nav{
        display: block !important;
    }
}
@media (max-width:768px){
    nav{ 
        display: none;
        padding: 0;
    }

    .responsive-bar{
          top:0;
        display: block;
        position: fixed;
    }
    nav h1{
        display: block;
        float: none;
    }
    nav ul{
        float: none;
    }
    nav ul li{
        display: block;
        text-align: center;
        padding: 15px 20px;
        border-bottom: 1px solid rgba(255,255,255,.1)
    }
    #full-logo{
        display: none;
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<nav>
    <h1 id="full-logo"><a href="#">hola</a></h1>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Service</a></li>
        <li><a href="#">Portfolio</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
    <div style="clear:both;"></div>
</nav>
<div class="responsive-bar">
        <h3 class="brand"><a href="#">MyCar</a></h3>
    <h4 class="menu">Menu</h4>
    <div style="clear:both;"></div>
</div>

我在移动视图上有一个问题,当向下滚动并单击菜单按钮时什么都没有出现但是当我在到达时单击菜单会出现菜单项 我需要的是向下滚动向上菜单出现 我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

问题是因为您将overflow: hidden设置为正文,而nav是页面流的一部分。 nav将始终相对于其父级进行偏移。

以下是禁用overflow: hidden的示例: http://jsfiddle.net/u9L50243/(切换菜单然后滚动 - 您会注意到导航滚动到视口并离开视口)

除了position: fixed之外,最简单的解决方法就是将.responsive-bar应用于导航栏。

例如:http://jsfiddle.net/ebcvqds7/