2016-06-16 17 views
3

Ich habe zwei Navbars. Nehmen wir an, eine Benutzer-Navigationsleiste oben und eine primäre Navigationsleiste unter der Benutzer-Navigationsleiste.macht eine navbar Sticky, wenn Benutzer scrollt

Ich möchte eine sticky primäre Navbar haben, wenn der Benutzer scrollt.

Was genau versuche ich zu tun ist, die Navbars ähnlich zu meinem Favoriten-Spiel Website-Header, hier https://playoverwatch.com/en-us/ Sehen Sie, wie die erste Navbar schön verschwindet, wenn Sie blättern und die zweite oben haftet? Ich möchte wirklich etwas ähnliches oder vielleicht genau so haben.

#ipsLayout_header header { 
 
    margin-bottom: 15px; 
 
    background-color: rgba(2,25,72,.3); 
 
} 
 
.ipsLayout_container { 
 
    max-width: 1340px; 
 
    padding: 0 15px; 
 
} 
 
.ipsNavBar_primary { 
 
    background: #304d66; 
 
}
<div id="ipsLayout_header"> 
 
    <header> 
 
     <div class="ipsLayout_container"><!-- my first navbar --> 
 
      <ul id="elUserNav"> 
 
       <li id="cCreate"> 
 
\t \t \t \t links 
 
       </li> 
 
      </ul> 
 
     </div> 
 
    </header> \t 
 
    <nav class="ipsLayout_container"><!-- my second navbar --> 
 
     <div class="ipsNavBar_primary"> 
 
      <ul class="ipsResponsive_block"> 
 
       <li id="elNavSecondary_34"> 
 
       links 
 
       </li> \t 
 
      </ul> 
 
     </div> 
 
    </nav> 
 
</div>

Antwort

2

Hier ist Code. Stellen Sie header div fest nach oben und scrollen Sie nach oben minus so hoch wie die obere Menühöhe.

css -

#ipsLayout_header{ 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    display: block; 
    z-index: 10; 
    background: #fff; 
    -webkit-transition: .3s all 0s ease; 
    -moz-transition: .3s all 0s ease; 
    transition: .3s all 0s ease; 
} 

JS-

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 
    var headerHeight = $('header').outerHeight(); 
    if (scroll >= 100) { 
    $("#ipsLayout_header").css('top', -headerHeight); 
    } 
    else { 
    $("#ipsLayout_header").css('top', '0'); 
    } 
}); 

JSFiddle - https://jsfiddle.net/dhananjaymane11/wvykLqxb/1/

+0

Danke ein Haufen Bruder, funktioniert perfekt. Aber ich habe noch eine Frage. Ich versuche, es ähnlich zu diesem https://playoverwatch.com/en-us/ Header zu machen, dass, wenn Sie die Seite nach unten scrollen, Sie sehen können, dass die zweite Navigationsleiste zu 100% erweitert wird. Ich habe versucht, das Javascript zu bearbeiten, um 'if (scroll> = 100) { $ (". IpsLayout_container") hinzuzufügen. Css (' max-width ',' 100% '); } 'es funktioniert aber nur einmal, also wenn Sie nach unten scrollen funktioniert es, aber wenn scroll zurück nach oben die zweite navbar immer noch zu 100% erweitert, da ich ein Neuling mit JavaScript und ich weiß nicht, wie man das macht. Irgendeine Idee? – Nippledisaster

+1

Ich habe in jsfiddle aktualisiert - https://jsfiddle.net/dhananjaymane11/wvykLqxb/2/ hoffe, es wird Ihnen helfen. – DJAy

+0

Vielen Dank für die Hilfe, funktioniert perfekt: P – Nippledisaster

1

Try this ...

$(document).ready(function(){ 
 
\t $(window).scroll(function(){ 
 
    \t if ($(document).scrollTop()>$('nav').offset().top) 
 
    \t $('nav').addClass('onTop'); 
 
    else 
 
    \t $('nav').removeClass('onTop'); 
 
    }) 
 
})
#ipsLayout_header{ 
 
    width:100%; 
 
    height:800px; 
 
    background:#feacbe; 
 
    padding:0px; 
 
    margin:0px; 
 
    } 
 
    #ipsLayout_header header { 
 
     margin-bottom: 15px; 
 
     height: 44px; 
 
     background-color: rgba(2,25,72,.3); 
 
    } 
 
    .ipsLayout_container { 
 
     max-width: 1340px; 
 
     padding: 0 15px; 
 
    } 
 
    .ipsNavBar_primary { 
 
     width:100%; 
 
     height:40px; 
 
     background: #304d66; 
 
    } 
 
    .onTop{ 
 
     position:fixed; 
 
     z-index:9999; 
 
     width:92%; 
 
     top:0; 
 
    } 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<div id="ipsLayout_header"> 
 

 
\t <header> 
 
\t \t <div class="ipsLayout_container"><!-- my first navbar --> 
 
\t   <ul id="elUserNav"> 
 
\t \t \t  <li id="cCreate"> 
 
\t \t \t \t links 
 
\t \t \t  </li> 
 
\t   </ul> 
 
\t  </div> 
 
\t </header> 
 
\t 
 
\t <nav class="ipsLayout_container"><!-- my second navbar --> 
 
\t \t <div class="ipsNavBar_primary"> 
 
\t \t \t <ul class="ipsResponsive_block"> 
 
\t \t   <li id="elNavSecondary_34"> 
 
\t \t \t \t links 
 
\t \t   </li> \t 
 
\t \t \t </ul> 
 
\t \t </div> 
 
\t </nav> 
 

 
</div>

$ (document) .scrollTop() ist die Funktion, die verwendet wird, um die aktuelle Rolle zu holen Position des Fensters, basierend darauf können Sie die CSS-Klassen ändern.

+0

Vielen Dank für Ihre h elp :) – Nippledisaster

0
<h2>First header</h2> 
<header><h1>Sticky Header</h1></header> 
<img src="large-image.jpg" width="782" height="2000" alt="Big Image" /> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(window).scroll(function() { 
if ($(this).scrollTop() > 1){ 
    $('header').addClass("sticky"); 
    } 
    else{ 
    $('header').removeClass("sticky"); 
    } 
}); 
</script> 
<style type="text/css"> 

    header{ 
    width: 100%; 
    text-align: center; 
    font-size: 72px; 
    line-height: 108px; 
    height: 108px; 
    background: #335C7D; 
    color: #fff; 
    font-family: 'PT Sans', sans-serif; 
} 

.sticky { 
    position: fixed; 
    top: 0; 
} 
</style> 

https://jsfiddle.net/mv0h6r1t/

1

$(function() { 
 
    var win = $(window); 
 
    var header = $('#ipsLayout_header'); 
 
    var height = $('header').outerHeight(true); 
 
    
 
    win.on('load scroll', function() { 
 
    if(win.scrollTop() > height) { 
 
     header.addClass('sticky'); 
 
     header.css({ 
 
     marginTop: -height 
 
     }); 
 
    } else { 
 
     header.removeClass('sticky'); 
 
     header.css({ 
 
     marginTop: 0 
 
     }); 
 
    } 
 
    }); 
 
});
body { 
 
    margin: 0; 
 
} 
 

 
#ipsLayout_header { 
 
    transition: margin 0.25s ease; 
 
    overflow: hidden; 
 
    position: fixed; 
 
    z-index: 100; 
 
    right: 0; 
 
    left: 0; 
 
    top: 0; 
 
} 
 
#ipsLayout_header header { 
 
    background-color: rgba(2,25,72,.3); 
 
    transform: translateY(0); 
 
    margin-bottom: 15px; 
 
} 
 
.ipsLayout_container { 
 
    position: relative; 
 
    max-width: 1340px; 
 
    padding: 0 15px; 
 
} 
 
.ipsNavBar_primary { 
 
    background: #304d66; 
 
} 
 
.page-content { 
 
    height: 1000px; 
 
} 
 
.ipsResponsive_block, 
 
#elUserNav {margin: 0;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="ipsLayout_header"> 
 

 
    <header> 
 
    <div class="ipsLayout_container"><!-- my first navbar --> 
 
     <ul id="elUserNav"> 
 
     <li id="cCreate"> 
 
      links 
 
     </li> 
 
     </ul> 
 
    </div> 
 
    </header> 
 

 
    <nav class="ipsLayout_container"><!-- my second navbar --> 
 
    <div class="ipsNavBar_primary"> 
 
     <ul class="ipsResponsive_block"> 
 
     <li id="elNavSecondary_34"> 
 
      links 
 
     </li> \t 
 
     </ul> 
 
    </div> 
 
    </nav> 
 

 
</div> 
 
<div class="page-content"> 
 
    
 
</div>

+0

Vielen Dank für Ihre Hilfe :) – Nippledisaster

+0

@ ŢamanŞheƦzad Sie sind willkommen) –