J'essaie de faire en sorte que ma barre de navigation reste en haut de la page, comme sur forbes.com
Je sais que je pourrais faire
nav
{
position: fixed;
top: 0;
}
mais la barre de navigation n'est pas en haut de la page, elle vient après le logo ... Cependant, lorsque vous faites défiler l'écran vers le bas, je souhaite que la barre de navigation reste en haut de l'écran.
la solution est facile, conservez votre css tout en ajoutant px
nav
{
position: fixed;
top: 0px;
}
Vous pouvez l'essayer dans JQuery comme ceci:
HTML:
<div id="wrapper">
<header>
<h1>Floater Navigation</h1>
</header>
<nav>
<p>Navigation Content</p>
</nav>
<div id="content">
<p>Lorem Ipsum.</p>
</div>
</div>
CSS:
#wrapper {
width:940px;
margin: 0 auto;
}
header {
text-align:center;
padding:70px 0;
}
nav {
background: #000000;
height: 60px;
width: 960px;
margin-left: -10px;
line-height:50px;
position: relative;
}
#content {
background: #fff;
height: 1500px; /* presetting the height */
box-shadow: 0 0 5px rgba(0,0,0,0.3);
}
.fixed {
position:fixed;
}
JQuery:
$(document).ready(function() {
// Calculate the height of <header>
// Use outerHeight() instead of height() if have padding
var aboveHeight = $('header').outerHeight();
// when scroll
$(window).scroll(function(){
// if scrolled down more than the header’s height
if ($(window).scrollTop() > aboveHeight){
// if yes, add “fixed” class to the <nav>
// add padding top to the #content
// (value is same as the height of the nav)
$('nav').addClass('fixed').css('top','0').next().css('padding-top','60px');
} else {
// when scroll up or less than aboveHeight,
// remove the “fixed” class, and the padding-top
$('nav').removeClass('fixed').next().css('padding-top','0');
}
});
});
source: http://www.jay-han.com/2011/11/10/simple-smart-sticky-navigation-bar-with-jquery/
Voici un moyen de le faire sans JQuery. Cela fonctionne en plaçant un écouteur de défilement dans la fenêtre et en changeant la classe de la barre de navigation lorsque le défilement atteint la bonne position.
var body = document.getElementsByTagName("body")[0];
var navigation = document.getElementById("navigation");
window.addEventListener("scroll", function(evt) {
if (body.scrollTop > navigation.getBoundingClientRect().bottom) {
// when the scroll's y is bigger than the nav's y set class to fixednav
navigation.className = "fixednav"
} else { // Overwise set the class to staticnav
navigation.className = "staticnav"
}
});
h1 {
margin: 0;
padding: 10px;
}
body {
margin: 0px;
background-color: white;
}
p {
margin: 10px;
}
.fixednav {
position: fixed;
top: 0;
left: 0;
}
.staticnav {
position: static;
}
#navigation {
background-color: blue;
padding: 10px;
width: 100%;
}
#navigation a {
padding: 10px;
color: white;
text-decoration: none;
}
<h1>
Hello world
</h1>
<nav id="navigation" class="staticnav"><a href="#">Home</a> <a href="#">About</a>
</nav>
<!-- We initialize the nav with static condition -->
<p>
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text. Some text.
</p>
C’est ainsi que la barre de navigation s’accroche au sommet après le défilement qui la précède.
.affix {
top: 0px;
margin: 0px 20px;
}
.affix + .container {
padding: 5px;
}
<nav class="navbar navbar-default" data-spy="affix" data-offset-top="50">
...
</nav>
"navbar" crée lui-même un bloc. Vous n'avez donc qu'à mentionner la marge dans votre fichier CSS .navbar {
margin: 0px auto; /*You can set your own margin for top-bottom & right-left respectively*/
z-index: 1;
}
L'index z définit la priorité sur cet élément particulier, de sorte que les autres éléments ne défilent pas. Si z-index a une valeur positive, alors il a la priorité la plus élevée, sinon la priorité la plus basse (pour les valeurs négatives). J'espère que cela sera utile.