【问题标题】:Can't get my footer to stick to the bottom无法让我的页脚粘在底部
【发布时间】:2013-10-24 06:52:02
【问题描述】:

我已经编写了大约一周的代码,并且我正在自学(希望能解释我在这段代码中的很多错误)。

我尝试了很多示例来让页脚固定在页面底部。 当我尝试更改包装器或页脚的“位置:绝对”时,它要么在浏览器窗口和页眉之间产生间隙,要么将页脚放在顶部。

我不知道如何解决这个问题。 (我的代码的一些提示也非常感谢!)

HTML http://pastebin.com/ksgJSUpz

CSS http://pastebin.com/i9nPtYkU

谢谢!

【问题讨论】:

    标签: html css footer sticky-footer


    【解决方案1】:

    问题是您在整个代码中一直在使用position:absolute。绝对定位会打断文档的流动。

    如果您使用相对定位或根本没有定义定位(静态位置),则元素将一个接一个地运行。使用您的代码,您必须计算每个元素的高度 end 开始下一个元素,前一个元素手动结束。发生这种情况是因为绝对定位的元素不会将其他元素向下推。他们好像没有身高。例如,您的标题高度为 100 像素;然后你从绝对定位和前 100px 开始你的信息;

    您的页脚将转到您告诉他的绝对位置。问题是你不知道那个位置是什么,因为你有一个高度可变的元素。如果你把 `bottom:0;'使用绝对定位,标题只会位于其父级的底部。在您的情况下,它的父级是没有定义特定高度的包装器。所以#wrapper 获取其内容的高度,但由于它的内容都是绝对定位在其中的,正如我所说的那样,它破坏了流程,它不会从它们那里得到任何高度。相反,#wrapper 获取的是窗口的高度,而不是整个文档。

    最好的办法是在没有绝对定位的情况下重新设计您的页面。

    一些快速的解决方法是给你的包装器一个特定的高度,比如height: 1200px; 这将迫使您的页脚位于 1200 像素的底部

    Example with height at wrapper

    另一种解决方案是为您的页脚使用固定定位。这将使页脚即使在滚动时也会粘在窗口的底部。

    Example with fixed positioning

    但实际上你应该做的是从一开始就重新设计页面,并避免在不需要的地方进行绝对定位。

    【讨论】:

    • 谢谢!我使用了“固定定位”,但它并没有真正满足我的目的。我使用“位置:绝对”的原因是因为我的 div(主要是标题)不会出现在浏览器的两侧,而是在浏览器窗口和 div 之间留下了 20px 的间隙。看起来不太好。如果没有“位置:固定”,我该如何解决这个问题......?非常感谢!
    • 你能在 JSfiddle 上发布一个例子吗?我去看看,让你知道
    • 我的意思是给我一个例子,标题不会出现在浏览器的两侧,这样我就可以看看发生了什么,以及如何在不使用position:absolute;的情况下实现你想要的目标跨度>
    猜你喜欢
    • 2014-08-13
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多