当前位置: 首页 > 知识库问答 >
问题:

如何在IE11中使用flexbox制作粘性页脚?

邢勇
2023-03-14

我试图用flexbox做一个简单的设计,但我在IE11上遇到了麻烦。基本上,我想要一个页脚,只有在内容不够高的情况下才会粘到底部。我对Chrome这样做没有异议:

*,
*:after,
*:before {
  box-sizing: border-box;
}

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

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

main {
  flex: 1;
}
<header>
  Header
</header>
<main>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
</main>
<footer>
  Footer
</footer>

只玩的数字

有没有一种不用JavaScript就能实现这一点的方法?


共有3个答案

邹书
2023-03-14

一个真正对我有帮助的解决方案(可能不适用于所有情况)是添加一个任意的固定高度(以像素为单位)——最小高度覆盖固定高度,因此没有裁剪的内容。下面是一个CSS示例:

.fullheight {
    min-height: 100vh;
    height: 200px; /*IE 11 flexbox min-height fix*/
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    align-content: center;
}
应嘉容
2023-03-14

main上,用flex: 1代替flex: auto。这应该是你所需要的。

flex:1速记规则细分为:

  • flex-grow:1

flex:auto速记规则细分为:

  • flex-add: 1
  • flex-收缩: 1
  • flex基础:自动

IE在解析flex basis:0时遇到问题。

更多信息:

  • flex属性在IE中不工作
武峻熙
2023-03-14

IE有一个min height错误,需要在flex column containers父项上显示display:flex,在本例中为html

小提琴演示

像这样更新你的CSS

css lang-css prettyprint-override">*,
*:after,
*:before {
  box-sizing: border-box;
}
html, body {
  margin: 0;
  display: flex;
}
body {
  flex-direction: column;
  min-height: 100vh;
}
main {
  flex-grow: 1;
}
<header>
  Header
</header>
<main>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
  <p>Main</p>
</main>
<footer>
  Footer
</footer>
 类似资料:
  • 问题内容: 我正在尝试使用flexbox做一个简单的设计,但是IE11遇到了麻烦。基本上,我希望页脚仅在内容不够高时才停留在底部。我在使用Chrome这样的操作时没有问题: 只是玩一些,以查看IE11错误的行为。 没有JavaScript,有没有办法实现这一目标? 问题答案: IE浏览器存在一个错误,并且需要在弹性列容器父项上进行操作,在这种情况下, 像这样更新您的CSS

  • 问题内容: 我对此稍作停留,以为我会分享这个+ flexbox陷阱: 在将视图切换到Flex Box容器之前,我的粘性div工作正常,并且当将div包裹在flexbox父级中时,div突然变得不粘性。 问题答案: 由于flex box元素默认为,因此所有元素都具有相同的高度,无法滚动。 将添加到粘性元素的高度设置为auto,可以滚动并固定它。 当前,所有主流浏览器均支持此功能,但Safari仍在前

  • null 请告知我如何实现此行为。

  • 问题内容: 当居中的flexbox项溢出其容器时,它们可能具有不良行为。 已经针对此问题提供了几种非灵活的解决方案,但是根据MDN,存在一个如下所述的值。 如果项目的大小溢出对齐容器,则将对齐该项目,就好像对齐模式已开始一样。 可以如下使用。 不幸的是,我无法找到任何示例或讨论,也无法确定浏览器对此有多少支持。 我试图在此CodePen中使用。但是,它对我不起作用。本似乎被忽略,或者容器元素是不正

  • 问题内容: 这里要注意的关键是页脚的高度不会固定,而是随其内容而变化。 当我说“粘性页脚”时,我将其理解为“不高于视口底部的页脚,但如果有足够的内容,它将被隐藏,直到用户滚动为止”的通用定义。下降到足以看到它的程度。” 另请注意,我不需要支持旧版浏览器。如果CSS 和相关属性在这里有所帮助,那么它们是公平的游戏。 问题答案: 这里的所有其他解决方案都已过时,并且使用JavaScript或黑客手段。

  • 问题内容: 我正在使用 现在,由于Cookie无法实现可序列化,因此我无法序列化该List。 编辑:(指定了我的目标,不仅是问题) 我的目标是将DefaultHttpClient与持久性cookie一起使用。 有经验的人可以带领我走上正确的道路吗?我可能还没有发现另一种最佳实践… 问题答案: 创建您自己的类,然后在构造过程中复制属性。像这样: 确保所有属性本身也可序列化。除了基元之外,该类本身例如