Я заметил, что Google делает это в определенных местах, как здесь http://news.google.com/nwshp?hl=en (левая панель навигации). Из того, что я могу сказать, они проверяют положение на странице, а затем устанавливают элемент в фиксированное положение, когда страница прокручивается достаточно вниз, чтобы элемент начал прокручиваться за пределы экрана.
Похоже, что другой метод, использование jQuery для установки верхнего поля позволит элементу отставать и становиться нестабильным (если вы не используете анимацию), так как JavaScript должен продолжать позиционировать элемент.
Вот пример в Ext, он, вероятно, очень помог бы, если бы у меня не было выбора в обработчике событий, но он работает.
Ext.fly(document).on("scroll", function(e,t,o){
Ext.select(".pinnable").each(function(el,c,idx){
var y = window.scrollY;
if(!el.hasClass("pinned")){
var ypos = el.getY();
if(y>ypos){
el.addClass("pinned");
el.set({
originalY:ypos
});
}
} else {
var origy = el.getAttribute("originalY");
if(origy && y<origy){
el.removeClass("pinned")
}
}
});
});