【发布时间】:2014-01-26 08:02:45
【问题描述】:
我在某个条件下(基本上如果用户向上滚动)设置位置固定的元素和其他 css 的样式,但该元素的行为类似于相对定位的元素。换句话说,它是随着页面滚动而不是固定的。
我尝试隔离此问题,但此问题仅存在于整个站点中,我需要它在此站点中工作。
var lastScrollTop = 0;
$(window).scroll(function(){
var st = $(this).scrollTop();
if(st<=lastScrollTop){
//scroll up
if($(this).scrollTop()>235) $('#searchInput').removeClass('slideIn').addClass('stickySearch');
else $('#searchInput').removeClass('stickySearch').addClass('slideIn');
}
else $('#searchInput').removeClass('stickySearch').removeClass('slideIn');
lastScrollTop = st;
});
现在.slideIn 类没有与之关联的样式,但.stickySearch 有。
这是 CSS:
.stickySearch{
width:56% !important;
position:fixed !important;
left:0;
right:0;
}
我检查了开发人员工具,并且正在应用类和样式,但是固定的位置不起作用。
这是一个实时网址:http://goo.gl/ns6UEQ
请注意,有一个小窗口高度有助于滚动。向下滚动以将标题隐藏在顶部,然后向上滚动并显示搜索栏,但当标题返回视图时,搜索栏将回到标题中的位置。
【问题讨论】:
-
!important忽略 css 如果它可以被覆盖....删除它,你应该很高兴去! -
我认为问题在于您正在尝试跟踪 lastscrolltop 并对其进行测试,您应该只需要内部 if/else 语句
-
@NoobEditor 我删除了 !important 并且它的行为仍然相同。我当然必须删除原来那里的
position:relative;,以便固定样式。如此固定的样式正在被设置,但它仍然随着页面滚动。 -
@PatrickEvans 嗯?不,这有助于确定用户是否向上滚动。我只希望在用户向上滚动并且标题被隐藏时发生这种情况。
-
@gomangomango,啊,我添加了一个更新的答案,它将显示一个修改后的 if 语句,这样输入只会在向上滚动时被修复
标签: javascript jquery html css css-position