【发布时间】:2014-02-28 18:16:38
【问题描述】:
当页面加载时,我有一个位于页面标题下方的菜单,但我希望它在窗口向下滚动到菜单到达页面顶部时粘在页面顶部。我让这个功能完美地工作,但我也希望同时发生一些其他的变化;我希望固定徽标缩小以适应(现已修复)菜单的高度,就好像它在其中一样。
我几乎已经确定了所有 CSS 等,因为我的代码的各种迭代允许我测试单个元素的更改,但我正在努力让整个事情顺利地协同工作。
值得注意的是,该网站是响应式的,尽管我不确定这在寻找解决方案时会有多大的相关性。我遇到问题的菜单迭代是桌面/平板电脑大小的菜单,而不是移动大小的菜单。
我准备了一些小提琴来说明我的情况,其中一个的代码以非常粗略且不受欢迎的方式工作,而我认为即使在现阶段它还不是最终结果,它也会更接近最终结果。工作:
JSFiddle 的功能(有点)工作:http://jsfiddle.net/TdjXt/1/(为了让它工作,你可能不得不弄乱你的浏览器窗口大小并向下滚动到足够的粘性菜单参与)。
-
JSFiddle 演示了我当前的代码:http://jsfiddle.net/TdjXt/2/(此代码当前不起作用,但如前所述,我觉得这可能比其他示例更接近最终的结果。
以下是我一直致力于包含此功能的特定 Jquery 部分:
var stickerTop;
var somethingelse;
$(window).on("load resize", function(){
stickerHeight = $('#sticker').height();
stickerTop = parseInt($('#sticker').offset().top);
somethingelse = parseInt($(window).scrollTop()) + parseInt($("#sticker").css('margin-top'));
$(window).scroll(function(){
if (somethingelse > stickerTop){
$("#sticker").css({position:'fixed',top:'0px'});
$(".logo").css({top:'3px', width:'127px', height: stickerHeight - 6});
$(".logo img").css({float:'right'});
$('#page').css('padding-top',stickerHeight + 20);
}
else {
$("#sticker").css({position:'relative'});
$(".logo").css({width: 'auto',height: 'auto', top: '17px'});
$(".logo img").css({float:'none'});
$('#page').css('padding-top','20px');
}
});
});
谢谢:)
【问题讨论】: