【问题标题】:Footer doesn't fully go down to the bottom with flex layout [duplicate]使用 flex 布局,页脚没有完全下降到底部 [重复]
【发布时间】:2017-02-24 00:07:06
【问题描述】:

我试图为我的网站制作粘性页脚,在这种情况下,出于特定原因,我使用 javascript 创建元素,我创建了<footer> 元素,并尝试在每个宽度分辨率下将其完全置于底部。

我只想在正文处添加页脚,所以这是我的 javascript:

$(function () {
    $('.products').each(function(i, obj) {
        if (i > 0) {
           obj.id = "p" + i
           var pl = document.createElement("footer");
           var t = document.createTextNode(i);
           pl.className = "pageblock"
           pl.appendChild(t);
           document.body.appendChild(pl);
        }
    });
});

这将创建页脚,在这种情况下仅创建单个页脚,.pageblock 类的编辑样式有效。

为了让页脚完全下降,我试过这个:

.pageblock {
    clear: both;
    position: relative;
    text-align: center;
    bottom: 0;
    z-index: 10;
    font-family: 'Lato';
    font-size: 3em;
    color: white;
    font-weight: bold;
}

但由于某种原因,它仍然无法工作,它会卡在垂直中心附近的某个地方。 Check for "1" here.

我在网站上有 flex 布局,因此元素会随着浏览器水平缩放并增加垂直尺寸。


有什么方法可以将元素完全移动到底部,以便它始终存在,即使垂直尺寸变大或变小?有什么办法可以做到这一点,而无需将所有内容都包装在单个 div 中,这可能会损坏代码本身?

谢谢!

【问题讨论】:

  • 相对定位只移动一个元素相对于它在正常流中的位置。而且由于您只设置了bottom:0,因此您甚至根本不会将其从该位置移动。你认为这将如何实现你想要的?
  • +CBroe 我不想用滚动来修复它,我希望它完全保持在底部。
  • 使用 flexbox 实现此目的的一种简单方法:philipwalton.github.io/solved-by-flexbox/demos/sticky-footer(您可能需要在其余内容周围添加一个额外的容器元素,但这应该可以在不破坏所有内容的情况下实现。)
  • @CBroe 感谢您的解决方案,我应该为页脚创建单独的 flexbox 元素还是应该与我现有的元素一起创建?
  • 在您当前的布局中可能很难实现这一点,因为您有诸如绝对定位的搜索框之类的东西(没有明显的原因?),这使它脱离了流程,因此这些元素不再影响其父元素的高度。

标签: javascript html css flexbox


【解决方案1】:

如果没有 flex 设置和 html,很难准确地说出您需要什么,但直觉上,您可能需要

html, body {
    min-height: 100%;
}

如果您的应用程序允许。您的 flex 元素垂直拉伸到正文的高度,即内容的高度,因此您的页脚已经在底部。通过将最小高度设置为 100%,您可以将 html 和 body 设置为窗口高度,从而正确拉伸元素并将页脚置于底部。

【讨论】:

  • 我已经在html和body上试过了,可惜没有成功,这背后有什么原因吗?
  • 这在很大程度上取决于您的布局。你能做一个小提琴吗?
  • 完整的网站小提琴:jsfiddle.net/9bs2t1bj 用 flex 布局做页脚真的很难。
猜你喜欢
  • 2013-04-13
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 2020-05-24
  • 2016-09-25
相关资源
最近更新 更多