【问题标题】:Responsive sticky sidebar响应式粘性侧边栏
【发布时间】:2013-08-03 16:17:09
【问题描述】:

我的网站有一个响应式侧边栏。当屏幕顶部到达元素负 10 像素时,它应该开始它的 css 从“静态”更改为“固定”。它在我的笔记本电脑屏幕上对我来说没问题,但是当我将窗口大小调整为更像平板电脑的分辨率时,它并没有从它应该开始的地方开始。你可以查看结果here。

我的代码如下:

var obj = $('#menu');
var offset = obj.offset();
var topOffset = offset.top;
var leftOffset = offset.left;
var marginTop = obj.css("marginTop");
var marginLeft = obj.css("marginLeft");

$(window).scroll(function() {





    var scrollTop = $(window).scrollTop();
    var px = $("#menu").height();


if (scrollTop >= (topOffset + px)){
    obj.css({
            marginTop: 0,
            top: 20,
            position: 'fixed',
        });
    } else
if (scrollTop < topOffset + px){        obj.css({           marginTop: marginTop,           marginLeft: marginLeft,             position: 'static',         });     } 
});

【问题讨论】:

  • 好吧,你有没有试过在小窗口时刷新它? javascript/jquery 在页面加载时初始化,当它认为它在更大的屏幕上并且当你调整屏幕大小时,javascript 不知道它

标签: jquery sidebar


【解决方案1】:

为什么不使用媒体查询?另外我建议不要在 .css() 列表中留下尾随的 ','。

@media (max-width: 700px) and (min-width: 300px) {
  #YOUR_ELE_ID {
    marginTop: 0;
    top: 20;
    position: 'fixed';
  }
}

【讨论】:

  • 问题是,当我调整大小(并重新加载)时,#menu div 直到我在菜单的一半时才开始修复,这在更高分辨率的屏幕上不是问题,比如我的
  • 这就是您添加多个媒体查询的原因,具有多个条件。我只是举了一个例子。
  • 对不起,我忘了添加选择器。它现在反映了正确的格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多