html - flexbox 垂直居中加上一个粘性页脚

标签 html css alignment flexbox

我在我的页面上经常使用 flexbox。我在间隔开的 6 张图像上使用它,效果很好。

这是包裹在容器中的(粉红色背景)。我希望它垂直和水平对齐窗口。我让它工作正常。直到我在我的 flexbox 粘性页脚中添加。我无法让它们同时工作。

我的主要问题是 safari,让粘性页脚在其中工作。 我在 .container 类上使用 flex: 1 0 auto;

如果我将值更改为 flex: 1; 它居中,但页脚在 safari 中效果不佳

任何人都可以阐明这一点。我以前从未使用过 flexbox

https://codepen.io/gorelegacy/full/dXzbmK/

最佳答案

你能更准确一点吗?对我来说,它在您的 Codepen 中工作得很好。或者是粉红色背景(在大屏幕上显示一些黑色)问题?

一个建议,可能不是您的解决方案: Flexbox 用于定义布局。我看到你给 body 一个 flex-direction: row,你给一些元素一个固定的高度。 而不是使用

.bottom {
  height: 40px;
}

我推荐使用:

flex: 0 0 40px;

结果是一样的,但它可以防止将来出现小错误或奇怪的行为。您的 div class=top 也是如此。

关于您的问题,请尝试以下操作:

body {
display: flex;
flex-direction: column;
}

.top {
    flex: 0 0 40px;
}

.content {
    flex: 1;
    overflow-y: scroll;
}

.bottom {
    flex: 0 0 40px;
}

确保您的 .top、.bottom 和 .content 是 HTML 中唯一的直接子项。否则这将不起作用。

这样顶栏和底栏是固定的,您的内容会填满中间的空间。

编辑: 垂直对齐 <div class="content"> 中的内容,您应该将其添加到您的 CSS 中。 (连同上面的代码)

.content {
    flex: 1;
    overflow-y: scroll; //only if you want fixed footer
    display: flex;
    flex-direction: row; //column should also do fine, since you only have one child element
    justify-content: center;
    align-items: center;
}

.content-inner { //the only and direct child of content
    margin: auto;
}

关于html - flexbox 垂直居中加上一个粘性页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221573/

相关文章:

css - 输入类型文本和输入类型按钮之间的差距

javascript - 将 div 与这些 div 外部的 p 对齐

Android Spinner Gravity 不工作

c++ - 关于指针对齐,有没有办法使指针与某个给定的内存边界对齐?

jquery - 如何在输入文本时实现标签的即时隐藏()

jquery - 使用 chrome 开发人员工具 Xpath 找到正确的子 div id 以使用 Jquery 的点击功能定位

javascript - 用javascript数组填充struts2 select标签

javascript - 如何在 HTML 5 全屏模式下禁用默认关闭选项

jquery - JQuery 中的水平动画

html - 如何制作带有悬停效果的链接按钮?