Это может послужить хорошим началом.
Я сделал это прокруткой после 300 пикселей, для эффекта - смотреть оранжевое окно.
jsFiddle Demo
JS:
var st, slid=false;
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
$(window).scroll(debounce(function(){
st = $(window).scrollTop();
$('#rpt').html(st);
if(!slid && st > 300){
slid = true;
$('.upper-header').slideToggle('slow');
}
if (slid && st < 100){
slid = false;
$('.upper-header').slideToggle('slow');
}
}));
HTML:
<div class="upper-header">M a i n H e a d e r</div>
<div id="wrap"></div>
<div id="rpt"></div>
CSS:
html,body{100%;}
div{position:relative;}
#wrap{height:2000px;}
.upper-header{position:fixed;top:0;left:0;width:100%;height:50px;background:#222;color:#888;}
#rpt{position:fixed;top:100px;right:0;height:40px;width:100px;background:wheat;}
Ресурсы:
https://davidwalsh.name/javascript-debounce-function