【问题标题】:footer on bottom of viewport without overlaping with content视口底部的页脚不与内容重叠
【发布时间】:2011-07-23 06:49:27
【问题描述】:

我需要的是一个非常基本的布局,只有两个主要部分:内容和页脚。 页脚应始终位于视口底部。 所以我有:

  • 内容(位置:相对)
  • 页脚(位置:固定;底部:0px) 当我的内容很少时,这很有效(请参阅image 1)。

当视口太短或内容过多时,问题就开始了(请参阅image 2)。

内容位于页脚后面(重叠)并出现页面滚动。

我也不希望它走在前面。 我想要的是这个(见image 3

内容不与footer重叠,页面滚动只滚动内容div。

我不知道如何做到这一点,或者即使可以做到。 我不介意使用 jquery,也不关心 ie6。 任何帮助将不胜感激

谢谢

编辑

感谢您的回复。

我正在上传几张图片,以便您更好地了解我的需求。

在图 1 http://estudioibarra.com/test/image1.jpg 中你可以看到我想要的设计,在图 2 中 http://estudioibarra.com/test/image2.jpg 是相同的图像并有一些解释。

我想要的是始终位于视口底部的标题,因为这是我的菜单。而且我不希望内容与我的菜单重叠。因为内容将有超过 3 个项目。

我不想要的是这个http://estudioibarra.com/test/image3.jpg(内容出现在菜单后面)。

通过您的一些解决方案,我可以解决这个问题,但前提是我在容器 div 中有滚动条。我真的不喜欢那样。

有没有用主页面滚动来滚动容器内容??

再次感谢您的宝贵时间

【问题讨论】:

  • @rsplak:看图片。所有 3 张图片都在里面。
  • @thirtydot,是的,你是对的

标签: jquery css footer css-position overlapping


【解决方案1】:

在下面的示例中,即使父元素中的内容溢出,页脚也会保持不变。容器尺寸可以是动态的,页脚宽度会相应调整。与position:fixed 不同,页脚取决于容器而不是浏览器窗口。使用 jQuery,您可以:

var cw = $('#container').innerWidth();

$('#header').css({
    'width': cw + "px"
});

$('#container').scroll(function() {
    $('#header').css({
        'bottom': -$('#container').scrollTop()
    })
})

http://jsfiddle.net/M2n8Q/查看工作示例

【讨论】:

  • 感谢您的回复。这样做的问题是内容出现在标题后面。而且我不希望这样,因为我的标题是不透明的,所以你可以看到它后面的内容。
  • 解决方法很简单。用 div 包裹内容并将其放置在距离底部 30px 的位置。在jsfiddle.net/M2n8Q/3查看更新的解决方案@
  • 我在一个新问题中添加了新图片,这样您就可以准确地看到我需要什么。感谢您的帮助
【解决方案2】:

如何简单地同时制作内容和页脚position: fixed,然后随意放置它们,比如这个演示:http://jsfiddle.net/bAtVE/

#content {
    position: fixed;
    height: 85%;
    width: 95%;
    border: 1px blue solid;
    overflow-y: auto;
}

#footer {
    position: fixed;
    height: 10%;
    width: 95%;
    bottom: 0;
    border: 1px red solid;
}

<div id="content">
    here is content
</div>
<div id="footer">
    This is footer
</div>

编辑

这次我使用了position: absolute(见http://jsfiddle.net/bAtVE/1/)。这可能是一个更好的做法,因为fixed 位置不是跨浏览器兼容的。

#content {
    position: absolute;
    top: 0;
    left: 0;
    height: 85%;
    width: 100%;
    overflow-y: auto;
}

#footer {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 10%;
    width: 100%;
}

EDIT2

http://jsfiddle.net/bAtVE/2/

【讨论】:

  • 首先感谢您的回复。我对您的解决方案的问题是滚动只出现在内容 div 中。我想到了那个解决方案,但出于这个原因我没有使用它。我想要的是使用页面滚动来仅滚动内容 div 中的内容。这甚至可能吗?谢谢
  • 所有你需要做的就是修改 CSS 来做(看起来)你想要的。请参阅修改后的 CSS。
  • 我在一个新问题中添加了新图片,这样您就可以准确地看到我需要什么。感谢您的帮助
  • hum....如果你真的想要滚动条在旁边,你可以简单地将fix 的页脚放在底部,并在#content 的底部留一些空间。仍然有重叠,但是当用户滚动到底部时,他们仍然可以看到完整的内容。请参阅修改后的解决方案。
  • 感谢您的回复。但是由于我的半透明页脚,我试图避免重叠(参见我上一篇文章的图 3)。似乎我想要的东西无法完成,所以我将只在内容 div 中滚动滚动。还是谢谢
【解决方案3】:

将页脚固定到底部并给它一个与背景颜色相同的border-top 怎么样?

body { background:#eeeeed; }
#wrap { width:34em; margin:0 auto; }
#head, #foot { padding:1em 2em; }
#head, #main { background:#fff; }
#main { padding:0 2em 6em; }
#foot {
    bottom:0;
    color:#fff;
    width:30em;
    position:fixed;
    background:#444;
    text-align:center;
    border-top:1em solid #eeeeed;
}

演示:jsfiddle.net/Marcel/xgafM

【讨论】:

  • 感谢您的回复。但我不能这样做,因为页面的背景是随机选择的图像。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 2017-01-21
  • 2019-02-23
  • 2020-03-31
相关资源
最近更新 更多