当前位置: 首页 > 面试题库 >

如何在纯CSS中定义高度可变的粘性页脚?

逑禄
2023-03-14
问题内容

这里要注意的关键是页脚的高度不会固定,而是随其内容而变化。

当我说“粘性页脚”时,我将其理解为“不高于视口底部的页脚,但如果有足够的内容,它将被隐藏,直到用户滚动为止”的通用定义。下降到足以看到它的程度。”

另请注意,我不需要支持旧版浏览器。如果CSS display: table和相关属性在这里有所帮助,那么它们是公平的游戏。


问题答案:

这里的所有其他解决方案都已过时,并且使用JavaScript或table黑客手段。

随着CSS flex模型的问世,解决高度可变的粘性页脚问题变得非常非常容易:尽管以在水平方向上布局内容而著称,但Flexbox对于垂直布局问题也同样有效。您所要做的就是将垂直部分包装在flex容器中,然后选择要扩展的部分。他们会自动占用容器中的所有可用空间。

注意标记和CSS是多么简单。没有桌子黑客或任何东西。

当前使用的96%以上的浏览器都支持flex模型。

html, body {

  height: 100%;

  margin: 0; padding: 0;  /* to avoid scrollbars */

}



#wrapper {

  display: flex;  /* use the flex model */

  min-height: 100%;

  flex-direction: column;  /* learn more: http://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ */

}



#header {

  background: yellow;

  height: 100px;  /* can be variable as well */

}



#body {

  flex: 1;

  border: 1px solid red;

}



#footer{

  background: lime;

}


<div id="wrapper">

  <div id="header">Title</div>

  <div id="body">Body</div>

  <div id="footer">

    Footer<br/>

    of<br/>

    variable<br/>

    height<br/>

  </div>

</div>


 类似资料:
  • 问题内容: 有什么方法可以使用CSS将页脚粘贴到浏览器屏幕的底部或紧随内容之后(取决于哪个较长), 而无需 提前知道页脚的大小? 现在,我在容器中使用绝对位置,该容器中放置页脚,并且容器的最小高度为100%,但是如果更改页脚,我必须更改容器底部的填充以匹配其高度。 问题答案: 摘要: 对于具有页眉,内容区域和页脚的网站: 组 将您的身体(或包装div)设置为 将页眉,页脚和内容区域设置为。给您的页

  • 问题内容: 如何让您的div一路下滑?如何填充父div的垂直空间?如何在不使用背景图像的情况下获得等长的列? 我花了几天时间使用Google搜寻和剖析代码,以了解如何尽可能简单高效地完成等长列。这是我想出的答案,我想在一个小教程中与社区复制和粘贴样式共享此知识。 对于那些认为这是重复的,不是。我受到几个网站的启发,其中包括http://matthewjamestaylor.com/blog/equ

  • 编辑:codesandbox:https://codesandbox.io/s/40xj3zv5w7上的示例,图像变得非常小,而不是400px宽和10px高。

  • 问题内容: jQuery是否有任何语法方法来定义多个CSS属性,而无需像这样将所有内容都放在右边: 如果您有20条这样的代码,那么您将很难阅读,有什么解决方案吗? 例如,通过jQuery API,jQuery可以理解并返回正确的值 和 请注意,对于DOM表示法,属性名称周围的引号是 可选的 ,但对于CSS表示法,由于名称中的连字符,因此 必须 使用引号。 问题答案: 即使您有1个或更多,也最好只使

  • 问题内容: 我需要在CSS中定义的src属性。有没有办法指定这个属性? 问题答案:

  • 问题内容: 我正在尝试实现CSS粘贴页脚。 问题是存在内容DIV超出其容器的范围,导致滚动条不理想,并且挂在页面div上的背景图像没有扩展文档的整个高度。 这是我的HTML: 这是CSS: 问题答案: 很棒的 CSS Tricks 网站在其“ 代码段”区域中有一个“粘性页脚”的代码段 http://css-tricks.com/snippets/css/sticky-footer/ 或使用jQue