Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make a div stick to the top of the screen once it's been scrolled to?

I would like to create a div, that is situated beneath a block of content but that once the page has been scrolled enough to contact its top boundary, becomes fixed in place and scrolls with the page.

like image 811
evanr Avatar asked Aug 01 '09 07:08

evanr


1 Answers

You could use simply css, positioning your element as fixed:

.fixedElement {     background-color: #c0c0c0;     position:fixed;     top:0;     width:100%;     z-index:100; } 

Edit: You should have the element with position absolute, once the scroll offset has reached the element, it should be changed to fixed, and the top position should be set to zero.

You can detect the top scroll offset of the document with the scrollTop function:

$(window).scroll(function(e){    var $el = $('.fixedElement');    var isPositionFixed = ($el.css('position') == 'fixed');   if ($(this).scrollTop() > 200 && !isPositionFixed){      $el.css({'position': 'fixed', 'top': '0px'});    }   if ($(this).scrollTop() < 200 && isPositionFixed){     $el.css({'position': 'static', 'top': '0px'});    }  }); 

When the scroll offset reached 200, the element will stick to the top of the browser window, because is placed as fixed.

like image 149
Christian C. Salvadó Avatar answered Sep 28 '22 06:09

Christian C. Salvadó