【发布时间】:2014-09-01 09:39:56
【问题描述】:
我正在尝试创建一个与谷歌现在的搜索栏控件非常相似的 div 行为。
当页面最初加载时,您会得到一个位于特定位置的 div,当您开始向下滚动时,该 div 将保持在其相对/绝对位置(随着滚动滑动直到它消失)。一旦你开始向上滚动(或向上翻页),div 就会从顶部滑入(与内容一起),直到它到达其固定位置并停留在那里。
现在我想出了一个非常粗略/丑陋的例子来说明我试图实现的目标并且它有点工作,但我确信总体上有更好的方法。
http://jsfiddle.net/9654gd6c/3/
var lastScrollTop = 0,
scrH = 40,
marginTop = 40,
ch = {};
$(window).scroll(function (event) {
var st = $(this).scrollTop();
var elements = $('#scroller');
if (st > lastScrollTop) {
elements.css({
'position': 'absolute'
});
ch.dir = 'down';
} else {
if (ch.dir === 'down') ch.at = lastScrollTop;
if (ch.at - st - marginTop > scrH) {
elements.css({
'position': 'absolute',
'top': st + marginTop
});
} else {
elements.css({
'position': 'absolute',
'top': ch.at - scrH
});
}
ch.dir = 'up';
}
lastScrollTop = st;
});
哦,删除样式按钮应充当立即显示 div 按钮,将 div 带回其固定位置。提前感谢您的帮助
更新 2:感谢 David Karam,这里有一个没有切换位置的示例
http://jsfiddle.net/rmx50du5/2/
【问题讨论】:
-
这是针对移动网站的吗?在移动设备中,这是有道理的,因为房地产很有价值,并且您不希望栏随着向下滚动而浮动,但仍然可以帮助用户向上滚动。关于用户体验动机的一些说明将有助于为您的问题提供更好的解决方案。
-
好吧,它将成为报告页面的过滤器部分 + 报告标题行。是的,它确实有移动版本,但行为应该是一样的。所以这个想法是,当用户向下滚动时,他正在寻找某些东西,一旦他/她开始返回,也许他想更改搜索条件,这就是我想向他/她展示过滤器的原因。
标签: javascript jquery css