【问题标题】:html5: three-rows flexbox with fixed top/bottom and scrollable middlehtml5:具有固定顶部/底部和可滚动中间的三行 flexbox
【发布时间】:2013-10-20 21:19:26
【问题描述】:

是否可以为 firefox 24 和 chromium 31 制作具有固定 header/footer 和可滚动 article 部分的 html5 flexbox 布局?

+----------+
| header   |
+----------+
| article ||
|         ||
|         ||
|         ||
+----------+
| footer   |
+----------+

我试过这个(简化):

body {
  display: flex;
  flex-direction: column;
}
header {
  flex: 1;
}
article {
  flex: 8;
  overflow-y: scroll;
}
footer {
  flex: 1;
}

现在我正在尝试用article 填充剩余空间,但是如果内容高度小于窗口高度,则页脚不固定,如果更大,页脚将滚动到可视区域之外...

【问题讨论】:

  • 为什么文章的 flex 等于 8?
  • @PaulTotzke 我会在这里上钩。没人知道,大概吧。如今,人们通过 8 层间接粘贴东西。 sn-p 可能最初是为一个真正适用的特定情况而编写的,并且在它也登陆这里时通过互联网上的复制粘贴幸存下来。对于flex-grow,很少需要使用除1 之外的任何其他值,这是人们通常想要的flex-basis。伙计们,请阅读w3.org/TR/css-flexbox,实际上阅读和理解并不难,我什至不是以英语为母语的人,而且我做到了(在 3 天的时间里)。
  • 这就是我的想法,但有时会有一些奇怪的浏览器修复。只是必须确定。

标签: html css flexbox


【解决方案1】:

您可能需要确保身体 100% 高:

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

我发了fiddle

【讨论】:

  • 您的实现是正确的,但有一个错误,您的标题和页脚大小与页面大小相关。在大多数情况下是不可取的。这是替代解决方案jsfiddle.net/njfmt7w0
  • 严重不能支持这个^^评论。正是我遇到的问题。
  • mamu评论上的链接是一个非常简单干净的例子。 TY
  • 在手机上,当您开始滚动时,菜单栏/地址栏通常会消失。这样做的好处是您可以获得可用的完整浏览器高度。但是这种布局可以防止这种行为,我认为这是不可取的。同样在 iPad 上的 Safari 中,我注意到只要您不移动手指,滚动元素就会停止移动。通常滚动停止需要一段时间。我不会将它用于任何布局。
  • Mamu 的解决方案是错误的,因为文章没有拉伸以填充可用空间,因此页脚可以向上移动。我会采用 Moob 的解决方案,但从页眉和页脚中删除 flex: 1 以使其大小固定。另外,使用overflow-y: auto 而不是overflow-y: scroll 使滚动条在不需要时消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多