JQuery-粘性侧边栏在Firefox中不起作用
我在一个网站上工作,在某些条件下,它有一个固定位置的粘性边栏,在Chrome和Safari中运行良好,但在Firefox中会出现中断。我不确定问题是什么,因为我没有编写脚本:JQuery-粘性侧边栏在Firefox中不起作用,jquery,position,fixed,sidebar,sticky,Jquery,Position,Fixed,Sidebar,Sticky,我在一个网站上工作,在某些条件下,它有一个固定位置的粘性边栏,在Chrome和Safari中运行良好,但在Firefox中会出现中断。我不确定问题是什么,因为我没有编写脚本: $(document).ready(function() { if (!!$('.sticky').offset()) { // make sure ".sticky" element exists var stickyTop = $('.sticky')
$(document).ready(function() {
if (!!$('.sticky').offset()) { // make sure ".sticky" element exists
var stickyTop = $('.sticky').offset().top; // returns number
var newsTop = $('#news_single').offset().top; // returns number
$(window).scroll(function(){ // scroll event
var windowTop = $(window).scrollTop(); // returns number
var width = $(window).width();
var height = $(window).height();
if (stickyTop < windowTop && width > 960 && height > 450){
$('.sticky').css({ position: 'fixed', top: 40 });
$('#news_single').css({ left: 230 });
}
else {
$('.sticky').css('position','static');
$('#news_single').css({ left: 0 });
}
});
}
});
这是一个有问题的侧边栏,左边是一个带有红色标题的站点:
我很感激你能帮我做这件事
编辑:有一件事似乎使它保持一致,那就是barlas所建议的——向固定元素添加一个left属性。但是,这完全破坏了它,因为它随后固定在x轴上,即使浏览器调整大小也保持不变,等等。这对我不起作用,我只是需要它通过添加一个top属性来保持y轴不变。出于某种原因,这样做会导致不同于Chrome和Firefox的行为,Chrome和Firefox的行为都是应该的
困惑
解决:好的,我已经弄明白了
出于某种原因,Firefox和Chrome似乎对固定元素有不同的处理方式。我使结果一致的方法是为固定元素添加一个绝对定位的容器元素。我使用媒体查询确保该元素仅绝对定位在960px以上,因为站点是响应的
这使得粘性固定位置元素在两种浏览器中的行为方式相同。因此,与其说是jQuery问题,不如说是CSS问题。我编辑了我的答案,试着定位左侧的粘滞元素
$(window).scroll(function(){ // scroll event
var windowTop = $(this).scrollTop(); // change to this here
var width = $(window).width();
var height = $(window).height();
var positionEle = (width - 960 ) / 2 + 220; // 220 is ur stick part's width
if (stickyTop < windowTop && width > 960 && height > 450){
$('.sticky').css({ 'position': 'fixed', 'top': '40px', 'left':positionEle + 'px' }); //try this
$('#news_single').css({ left: 230 });
}
else {
$('.sticky').css('position','static','left':'0');
$('#news_single').css({ left: 0 });
}
});
谢谢你的回复。我不想让元素居中。当你向下滚动时,我只是在使用这个脚本来使侧边栏保持粘性——它在Chrome中已经很好地工作了,我只是想知道如何使它在Firefox中工作。我发现Firefox的问题是,将左侧的粘性元素设为默认值,你也需要更改它。请再次检查我的答案,但我实现了上面的脚本,它打破了Chrome和Firefox中的侧栏。你的脚本中有什么我需要编辑的吗?我现在注意到,你忘了用这些}关闭$window.scroll函数;好吧,我已经让它再次在Chrome中工作,但在Firefox中仍然不能正常工作-两种浏览器的定位完全不同。出于某种原因,Firefox仍然将侧边栏推向右侧。