Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery-粘性侧边栏在Firefox中不起作用_Jquery_Position_Fixed_Sidebar_Sticky - Fatal编程技术网

JQuery-粘性侧边栏在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')

我在一个网站上工作,在某些条件下,它有一个固定位置的粘性边栏,在Chrome和Safari中运行良好,但在Firefox中会出现中断。我不确定问题是什么,因为我没有编写脚本:

        $(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仍然将侧边栏推向右侧。