调整浏览器宽度时导航栏响应问题?

时间:2018-04-27 10:02:28

标签: javascript jquery html css

我对响应式导航栏有一个问题,当我为移动视图调整浏览器大小并打开然后关闭菜单按钮,之后使浏览器全屏显示大屏幕视图导航栏将消失 对该问题的任何帮助

我需要在向下滚动时添加另一个功能来修复导航栏,但是当在移动设备上滚动菜单时,它看起来很混乱

在我的代码下面(在代码段上)

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
    })
});
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 (max-width:768px){
    nav{ 
        display: none;
        padding: 0;
    }
    .responsive-bar{
        display: block;
    }
    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="#">MyCar</a></h1>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</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>

3 个答案:

答案 0 :(得分:3)

根据您的html结构,您必须将以下代码添加到您的css

@media (min-width:768px){
    nav{
        display: block !important;
    }
}

使用此功能,您无需对html和CSS进行任何更改。

&#13;
&#13;
$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
    })
});
&#13;
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 (max-width:768px){
    nav{ 
        display: none;
        padding: 0;
    }
    .responsive-bar{
        display: block;
    }
    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;
    }
}
@media (min-width:768px){
	nav{
	    display: block !important;
	}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<nav>
    <h1 id="full-logo"><a href="#">MyCar</a></h1>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您还需要在调整窗口大小时更新导航。好心检查。希望这对你有所帮助。刚刚在jquery中进行了更新。

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
    });
    
    $( window ).resize(function() {
    
      if($(window).width() > 767) {
        $("nav").slideDown(800);
      }
    });
});
nav{
    width: 100%;
    background: #202c45;
    padding: 0 50px;
    box-sizing: border-box;
    display: block
}
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 (max-width:768px){
    nav{ 
        display: none;
        padding: 0;
    }
    .responsive-bar{
        display: block;
    }
    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="#">MyCar</a></h1>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</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>

答案 2 :(得分:0)

请检查下面的代码行,在nav上方添加图片并使标题粘贴。

<强>脚本

$(document).ready(function(){
    $(".menu").click(function(){
        $("nav").slideToggle(800);
        $("nav").toggleClass("fixed_nav");
        $(".responsive-bar").toggleClass("addtop");
    });
}); 


$(window).scroll(function(){
    if($(window).width() > 767) {
        if ($(window).scrollTop() >= 150) {
            $('nav').addClass('fixed-header');
        }
        else {
            $('nav').removeClass('fixed-header');
        }
    }
    else {
        if ($(window).scrollTop() >= 150) {
            $('.responsive-bar').addClass('fixed-header');
        }
        else {
            $('.responsive-bar').removeClass('fixed-header');
        }
    }
});

<强> HTML

<div class="img-wrapper">
    <img src="https://via.placeholder.com/1250x150">
</div>
<nav class="nav-bar">
    <h1 id="full-logo"><a href="#">MyCar</a></h1>
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</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>

.............

<强> CSS

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 (max-width:768px){
    nav{
        display: none;
        padding: 0;
    }
    .responsive-bar{
        display: block;
    }
    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;
    }
    img {
        display: none;
    }
    .nav-bar.fixed_nav{
        display: none;
        position: fixed;
        width: 100%;
        left: 0px;
        right: 0px;
        top: 0px;
    }
    .fixed-header.addtop {
        top: 98px;
    }
}
@media (min-width:768px){
    nav{
        display: block !important;
    }
}
.sticky {
    position: fixed;
    top: 0;
    width: 100%;
}

.fixed-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
}
相关问题