Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick Make a nav bar stick
/* HEADER */
<div class="headercss">
<div class="headerlogo">
</div>
</div>
/* BODY */
body {
margin: 0px;
height: 2000px;
}
.headercss {
width: auto;
height: 320px;
position: relative;
}
.headerlogo {
width: auto;
height: 250px;
position: relative;
}
.nav {
width: auto;
height: 70px;
position: relative;
overflow: hidden;
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
float:left;
width:100%;
overflow: hidden;
}
li {
float: left;
width:25%;
min-width: 243px;
overflow: hidden;
}
a:link, a:visited {
display: block;
height: 68px;
min-width: 243px;
overflow: hidden;
}
a:hover, a:active {
}
To make header sticky, first you have to give position: fixed; for header in css. Then you can adjust width and height etc. I would highly recommand to follow this article. How to create a sticky website header
Here is code as well to work around on header to make it sticky.
header {
position: fixed;
right: 0;
left: 0;
z-index: 999;
}
This code above will go inside your styles.css file.
You can do it with CSS only by creating your menu twice. It's not ideal but it gives you the opportunity have a different design for the menu once it's on top and you'll have nothing else than CSS, no jquery. Here is an example with DIV (you can of course change it to NAV if you prefer):
<div id="hiddenmenu">
THIS IS MY HIDDEN MENU
</div>
<div id="header">
Here is my header with a lot of text and my main menu
</div>
<div id="body">
MY BODY
</div>
And then have the following CSS:
#hiddenmenu {
position: fixed;
top: 0;
z-index:1;
}
#header {
top: 0;
position:absolute;
z-index:2;
}
#body {
padding-top: 80px;
position:absolute;
z-index: auto;
}
Here is a fiddle for you to see: https://jsfiddle.net/brghtk4z/1/
Just use z-index
CSS property as described in the highest liked answer and the nav bar will stick to the top.
Example:
<div class="navigation">
<nav>
<ul>
<li>Home</li>
<li>Contact</li>
</ul>
</nav>
.navigation {
/* fixed keyword is fine too */
position: sticky;
top: 0;
z-index: 100;
/* z-index works pretty much like a layer:
the higher the z-index value, the greater
it will allow the navigation tag to stay on top
of other tags */
}
$(document).ready(function() {_x000D_
_x000D_
$(window).scroll(function () {_x000D_
//if you hard code, then use console_x000D_
//.log to determine when you want the _x000D_
//nav bar to stick. _x000D_
console.log($(window).scrollTop())_x000D_
if ($(window).scrollTop() > 280) {_x000D_
$('#nav_bar').addClass('navbar-fixed');_x000D_
}_x000D_
if ($(window).scrollTop() < 281) {_x000D_
$('#nav_bar').removeClass('navbar-fixed');_x000D_
}_x000D_
});_x000D_
});
_x000D_
html, body {_x000D_
height: 4000px;_x000D_
}_x000D_
_x000D_
.navbar-fixed {_x000D_
top: 0;_x000D_
z-index: 100;_x000D_
position: fixed;_x000D_
width: 100%;_x000D_
}_x000D_
_x000D_
#body_div {_x000D_
top: 0;_x000D_
position: relative;_x000D_
height: 200px;_x000D_
background-color: green;_x000D_
}_x000D_
_x000D_
#banner {_x000D_
width: 100%;_x000D_
height: 273px;_x000D_
background-color: gray;_x000D_
overflow: hidden;_x000D_
}_x000D_
_x000D_
#nav_bar {_x000D_
border: 0;_x000D_
background-color: #202020;_x000D_
border-radius: 0px;_x000D_
margin-bottom: 0;_x000D_
height: 30px;_x000D_
}_x000D_
_x000D_
.nav_links {_x000D_
margin: 0;_x000D_
}_x000D_
_x000D_
.nav_links li {_x000D_
display: inline-block;_x000D_
margin-top: 4px;_x000D_
}_x000D_
.nav_links li a {_x000D_
padding: 0 15.5px;_x000D_
color: #3498db;_x000D_
text-decoration: none;_x000D_
}
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>_x000D_
<div id="banner">_x000D_
<h2>put what you want here</h2>_x000D_
<p>just adjust javascript size to match this window</p>_x000D_
</div>_x000D_
_x000D_
<nav id='nav_bar'>_x000D_
<ul class='nav_links'>_x000D_
<li><a href="url">Nav Bar</a></li>_x000D_
<li><a href="url">Sign In</a></li>_x000D_
<li><a href="url">Blog</a></li>_x000D_
<li><a href="url">About</a></li>_x000D_
</ul>_x000D_
</nav>_x000D_
<div id='body_div'>_x000D_
<p style='margin: 0; padding-top: 50px;'>and more stuff to continue scrolling here</p>_x000D_
</div>
_x000D_
add to your .nav css block the
position: fixed
and it will work
I hope this can help someone. Determine the nav offset through js and then apply sticky position css to nav:
But first, we will define the styles in the stylesheet, like so.
.sticky {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 100;
border-top: 0;
}
Then, we will apply that class to the navigation conditionally with jQuery.
$(document).ready(function() {
var stickyNavTop = $('.nav').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.nav').addClass('sticky');
} else {
$('.nav').removeClass('sticky');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
CSS:
.headercss {
width: 100%;
height: 320px;
background-color: #000000;
position: fixed;
}
Attribute position: fixed
will keep it stuck, while other content will be scrollable. Don't forget to set width:100%
to make it fill fully to the right.
Just Call this code and call it to your nave bar for sticky navbar
.sticky {
/*css for stickey navbar*/
position: sticky;
top: 0;
z-index: 100;
}
I would recommend to use Bootstrap. http://getbootstrap.com/. This approach is very straight-forward and light weight.
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-fixed-top">
<li><a href="#home"> <br>BLINK</a></li>
<li><a href="#news"><br>ADVERTISING WITH BLINK</a></li>
<li><a href="#contact"><br>EDUCATING WITH BLINK</a></li>
<li><a href="#about"><br>ABOUT US</a></li>
</ul>
</div>
</div>
</div>
You need to include the Bootstrap into your project, which will include the necessary scripts and styles. Then just call the class 'navbar-fixed-top'. This will do the trick. See above example
Give headercss position fixed.
.headercss {
width: 100%;
height: 320px;
background-color: #000000;
position: fixed;
top:0
}
Then give the content container a 320px padding-top, so it doesn't get behind the header.
/* Add css in your style */
.sticky-header {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 100;
border-top: 0;
transition: 0.3s;
}
/* and use this javascript code: */
$(document).ready(function() {
$(window).scroll(function () {
if ($(window).scrollTop() > ) {
$('.headercss').addClass('sticky-header');
} else{
$('.headercss').removeClass('sticky-header');
}
});
});
Source: Stackoverflow.com